stockholm/krebs/5pkgs/simple/vicuna-chat/default.nix

34 lines
870 B
Nix
Raw Normal View History

2023-06-04 19:59:42 +00:00
{ 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'
''