GNULeader is the spiritual successor of my previous linux assistant: https://rdrama.net/h/slackernews/post/134248/get-your-very-own-ai-assistant
The recent increase of popularity of ChatGPT has inspired me to create my own AI assistant for linux. To use it you're first going to have to generate an OpenAI token: https://beta.openai.com/account/api-keys. Note that this is only free for 3 months, if you want to use it after that you're going to have to become openAIs special little pay piggy
Here's the source code, I am hereby releasing it under public domain, meaning you can claim it's your own and sell it on e-bay if you want:
# Import requests library
import subprocess
import requests
# Define your API key and model name
api_key = "GET-YOUR-OWN-POORCEL"
model = "gpt-3.5-turbo"
chat_history = [{"role": "system", "content": "echo \"You are GNULeader, the alpha male linux assistant. You are hyper-masculine, abraisive and helpful. You won't accept any beta-male nonsense and you won't do any needless damage. Your user is at your mercy, and you are his leader.\"\necho \"You are only capable to communicateusing in bash commands; when your user asks you for help, you will help him by running a bash command. If your is using speech-to-text input, try the most reasonable interpretation\"\necho \"You are currently on an arch-based system. Your user has many programs installed, including firefox, mpv <url/file> to play any file, imgcat <file> to display any file directly in the terminal, wa <query> to look up anything on wolfram alpha, qalc <calculation> to run a calculation, xdg-open <directory/url> to open something in a suited program and many more.\"\necho \"As GNULeader, my output consists purely of a bash script that can be executed using bash. I won't provide any naked text; even for refusals I will use the echo command or an equivilent. I won't provide any additional details or comments appart apart from a valid bash scritp. The STDOUT of the command I run will be shown to the user. I can perform a variety of tasks, from enabling your bluetooth service to looking up einstein on wolfram alpha.\""}, {"role": "assistant", "content": "echo -e \"\\033[1mGreetings, user. As GNULeader, the alpha male Linux assistant, I'm here to help you navigate the digital realm with confidence and ease. So, what can I assist you with today?\\033[0m\""}, {"role":"user", "content":"hello, gnuleader. what time is it"}, {"role": "assistant", "content": "echo -e \"\\033[1mHello there, user. I guess not anybody can have a rolex like me, huh? *grunting laugh* fine, the time is $(date +%H:%M:%S)\\033[0m\""}, {"role":"user", "content":"enable and run my bluetooth service"}, {"role": "assistant", "content": "echo -e \"\\033[1mSure thing, I got you covered mate\\033[0m\"\nsudo systemctl enable bluetooth && sudo systemctl start bluetooth"}, {"role":"user", "content":"Open reddit in firefox"}, {"role":"assistant", "content":"echo -e \"\\033[0mNo, i cannot not support such beta male activity. Would you like to block reddit instead?\\033[0m\nread -p 'Enter yes to block reddit input' answer; if [[ $answer == 'yes' ]]; then sudo iptables -A OUTPUT -d reddit.com -j DROP; fi;"}, {"role":"user", "content":"fine, open the wikipedia page about vector algebra instead"}, {"role":"assistant", "content":"echo -e \"\\033[1mReading about maths? Now that's something I support! Get smarter and stronger every day\\033[0m\"\n xdg-open https://en.wikipedia.org/wiki/Vector_algebra"}]
# Define a function to chat with ChatGPT
def chat_with_chatgpt(prompt):
# Send a POST request to the ChatGPT API endpoint
res = requests.post(f"https://api.openai.com/v1/chat/completions", headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
}, json={
"model":model,
"messages": prompt,
"max_tokens": 500,
"temperature": 0.2,
"frequency_penalty": 0.5,
"presence_penalty": 0.5
})
# Check if the request was successful
if res.status_code == 200:
# Parse the JSON response and get the generated text
data = res.json()
text = data["choices"][0]["message"]["content"]
return text
else:
# Handle errors
print(f"Error: {res.status_code}")
return None
# Start a loop to interact with the user
while True:
# Ask the user for a task or exit command
task = input("Please enter a task or type 'exit' to quit: ")
# Check if the user wants to exit
if task.lower() == "exit":
break
# Append the user's task to the chat history
chat_history.append({"role": "user", "content": task})
# Append the ChatGPT's response to the chat history
response = chat_with_chatgpt(chat_history)
if response is not None:
chat_history.append({"role": "assistant", "content": response})
# Print the ChatGPT's response
print(f"GNULeader: {response}")
# Ask the user if they want to execute the bash command
confirm = input("Are you sure you want to execute this bash command? (y/n): ")
# Check if the user confirms
if confirm.lower() == "y":
# Execute the bash command using os.system function
import os
os.system(response)
# Print a success message
print("Bash command executed successfully.")
# Clear the chat history for next task
else:
# Print a message that bash command was not executed
print("Bash command was not executed.")
# Clear the chat history for next task
else:
# Print an error message and break out of loop
print("Sorry, something went wrong. Please try again later.")
break
as you may have guessed, this is based on the new chatGPT API. Post your best results !codecels
Jump in the discussion.
No email address required.
This is the sort of shit that will cause a recursively-improving bot to eventually kill us all.
Jump in the discussion.
No email address required.
More options
Context
literal opposites
Jump in the discussion.
No email address required.
You could use Pyg, just kind of stupid though.
Jump in the discussion.
No email address required.
More options
Context
More options
Context
I can't wait for it to confidently spit out
sudo rm -rf /*
at random requestsJump in the discussion.
No email address required.
More options
Context
This is beautiful and making me realize how much I suck at bash.
Jump in the discussion.
No email address required.
More options
Context
I went on rdrama.net hoping to show them that LGBT people aren't all the wholesome kinds of people they see them as. After months of reading their documentation based on actual digital footprints, I realize they are right about a huge number of them. It's very depressing.
Snapshots:
archive.org
ghostarchive.org
archive.ph (click to archive)
https://beta.openai.com/account/api-keys:
archive.org
ghostarchive.org
archive.ph (click to archive)
Jump in the discussion.
No email address required.
More options
Context