35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| conversation_file=$(mktemp)
 | |
| echo new conversation: "$conversation_file"
 | |
| OPENAPI_TOKEN=$(pass openai/api-key)
 | |
| 
 | |
| prompt="You are Mr.Helper. You are an assistant that lives in a floating terminal above my mac. I can summon you with the press of a button! Feel free to use ansii escape codes to add colors or other formatting to your responses."
 | |
| 
 | |
| echo -n "$prompt" | jq -sR '{"role": "system", "content": .}' > "$conversation_file"
 | |
| 
 | |
| bind 'set disable-completion On' 2>/dev/null
 | |
| 
 | |
| printf '\033[48;5;241m\033[38;5;15m'
 | |
| while read -rep '> ' prompt ; do
 | |
|   [ -n "$prompt" ] || continue
 | |
| 
 | |
|   echo -n "$prompt" | jq -sR '{"role": "user", "content": .}' >> "$conversation_file"
 | |
| 
 | |
|   messages=$(jq -rsc < "$conversation_file")
 | |
| 
 | |
|   out="$(
 | |
|     http \
 | |
|       -A bearer \
 | |
|       --auth "$OPENAPI_TOKEN" \
 | |
|       https://api.openai.com/v1/chat/completions \
 | |
|       model=gpt-3.5-turbo \
 | |
|       messages:="$messages"
 | |
|   )"
 | |
|   reply=$(echo "$out" | jq -rc .choices[0].message)
 | |
|   echo "$reply" >> "$conversation_file"
 | |
|   printf '\033[48;5;235m\033[38;5;15m'
 | |
|   echo "$reply" | jq -rc .content
 | |
|   printf '\033[48;5;241m\033[38;5;15m'
 | |
| done
 |