Hacker News new | past | comments | ask | show | jobs | submit login

Hopefully there will be a plug-in-your-own-API-key open source thing then. Even better.



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"


Not to sure how to make it one section, aka, one session mode, so chatgpi can understand the previous talk.


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


Just use iteration where you continuously update the prompt to include previous messages




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: