News for hackers. Stuff that matters.
Re:Introducing ChatGPT and Whisper APIs by b5n on Wednesday March 01, 2023 @04:09PM (#34988379)
The future is now:

    gptask() {
    data=$(jq -n \
              --arg message "$1" \
              '{model: "gpt-3.5-turbo",
                max_tokens: 4000,
                messages: [{role: "user", content: $message}]}')

    response=$(curl -s https://api.openai.com/v1/chat/completions \
                    -H "Content-Type: application/json" \
                    -H "Authorization: Bearer $OAIKEY" \
                    -d "$data")

    message=$(echo "$response" \
                  | jq '.choices[].message.content' \
                  | sed 's/^\"\\n\\n//;s/\"$//')

    echo -e "$message"
    }

    export OAIKEY=<YOUR_KEY>
    gptask "what is the url for hackernews"
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.
Re:Introducing ChatGPT and Whisper APIs by _just7_ on Wednesday March 01, 2023 @08:39PM (#34990839)
Just use iteration where you continuously update the prompt to include previous messages
Re:Introducing ChatGPT and Whisper APIs by _andrei_ on Thursday March 02, 2023 @05:29AM (#34994148)
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