Re:Introducing ChatGPT and Whisper APIs
by b5n on Wednesday March 01, 2023 @04:09PM
(#34988379)
The future is now:
[ Parent
| on HN ]
Re:Introducing ChatGPT and Whisper APIs
by comment_ran on Wednesday March 01, 2023 @04:53PM
(#34988873)
Not to sure how to make it one section, aka, one session mode, so chatgpi can understand the previous talk.
Just use iteration where you continuously update the prompt to include previous messages
quick script
#!/usr/bin/env bash
set -uf -o pipefail
IFS=$'\n\t'
BOT='\033[33m'
NC='\033[0m'
messages=()
trim() {
local var="$*"
var="${var#"${var%%[![:space:]]*}"}"
var="${var%"${var##*[![:space:]]}"}"
printf '%s' "$var"
}
function complete {
local message="$1"
local data
messages+=("{\"role\": \"user\", \"content\": $(echo "$message" | jq -R -s '.')}")
processed_messages=$(printf '%s,' "${messages[@]}")
processed_messages="[${processed_messages::-1}]"
data=$(jq -n \
--arg model "gpt-3.5-turbo" \
--argjson messages "$processed_messages" \
'{ model: $model, messages: $messages }' \
| sed 's/\]\[/,/g')
response=$(curl -s https://api.openai.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d "$data")
message=$(echo "$response" | jq '.choices[].message.content')
printable_message=$(echo "$response" | jq -r '.choices[].message.content')
printable_message=$(trim "$printable_message")
echo -e "${BOT}Bot:${NC} $printable_message"
messages+=("{\"role\": \"assistant\", \"content\": $message}")
}
while true; do
read -r -p $'\e[35mYou:\e[0m ' message
complete "$message"
done