-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathgpt3
More file actions
executable file
·55 lines (52 loc) · 1.55 KB
/
gpt3
File metadata and controls
executable file
·55 lines (52 loc) · 1.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/bash
set -ef -o pipefail
# Inherit defaults from env variables for easy scripting
[ -z "$ENGINE" ] && ENGINE=davinci
[ -z "$TEMPERATURE" ] && TEMPERATURE=0.5
[ -z "$FREQ_PENALTY" ] && FREQ_PENALTY=0
[ -z "$PRES_PENALTY" ] && PRES_PENALTY=0
POSITIONAL=()
while [[ $# -gt 0 ]]; do
key="$1"
case $key in
-e|--engine)
ENGINE="$2"
shift # past argument
shift # past value
;;
-t|--temperature)
TEMPERATURE="$2"
shift # past argument
shift # past value
;;
-f|--freq-penalty)
FREQ_PENALTY="$2"
shift # past argument
shift # past value
;;
-p|--pres-penalty)
PRES_PENALTY="$2"
shift # past argument
shift # past value
;;
*) # unknown option
POSITIONAL+=("$1") # save it in an array for later
shift # past argument
;;
esac
done
set -- "${POSITIONAL[@]}" # restore positional parameter
[ -z "$2" ] && MAX_TOKENS=64 || MAX_TOKENS="$2"
[ -z "$OPENAI_KEY" ] && KEY="$OPENAI_API_KEY" || KEY="$OPENAI_KEY"
# FIXME: Improve error handling
curl -sSL -N \
-H "gpt3-cli/0.1.1 (https://github.com/CrazyPython/gpt3-cli)" \
-G https://api.openai.com/v1/engines/${ENGINE}/completions/browser_stream \
--data-urlencode prompt="$1" \
--data-urlencode temperature="$TEMPERATURE" \
--data-urlencode max_tokens="$MAX_TOKENS" \
--data-urlencode frequency_penalty="$FREQ_PENALTY" \
--data-urlencode presence_penalty="$PRES_PENALTY" \
-H "Authorization: Bearer $KEY" | sed -l 's/^data: //' | grep --line-buffer -v '^\[DONE\]$' | jq -j --unbuffered '.choices[0].text'
# Add trailing newline
echo