{ pkgs, ... }: pkgs.writers.writeDashBin "vicuna-chat" '' set -efu export PATH=${with pkgs; lib.makeBinPath [ coreutils curl jq ]} CONTEXT=''${CONTEXT:-$(date -Id)} PROMPT=$* if ! test -e "$CONTEXT"; then echo -n 'null' > "$CONTEXT" fi add_to_context() { jq -rc --argjson message "$1" '. + [$message]' "$CONTEXT" > "$CONTEXT.tmp" mv "$CONTEXT.tmp" "$CONTEXT" } add_to_context "{\"role\": \"user\", \"content\": \"$PROMPT\"}" response=$( jq -nc --slurpfile context "$CONTEXT" '{ model: "vicuna-13b", messages: $context[0], }' | curl -Ss http://vicuna.r/v1/chat/completions -H 'Content-Type: application/json' -d @- ) add_to_context "$(jq -rcn --argjson response "$response" '$response.choices[0].message')" jq -rcn --argjson response "$response" '$response.choices[0].message.content' ''