Initial commit — RoadCode import
Some checks failed
Shellcheck / shellcheck (push) Has been cancelled
Some checks failed
Shellcheck / shellcheck (push) Has been cancelled
This commit is contained in:
55
lib/providers/anthropic.sh
Normal file
55
lib/providers/anthropic.sh
Normal file
@@ -0,0 +1,55 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
# shellcheck source=../common.sh
|
||||
. "$ROOT_DIR/lib/common.sh"
|
||||
|
||||
anthropic_call() {
|
||||
local system_prompt="${1:-}"
|
||||
local user_prompt="${2:-}"
|
||||
local model="${ANTHROPIC_MODEL:-claude-3-5-sonnet-20240620}"
|
||||
local max_tokens="${ANTHROPIC_MAX_TOKENS:-1024}"
|
||||
local api_url="${ANTHROPIC_API_URL:-https://api.anthropic.com/v1/messages}"
|
||||
local timeout="${ANTHROPIC_TIMEOUT_SECONDS:-60}"
|
||||
|
||||
require_env ANTHROPIC_API_KEY
|
||||
require_cmd curl
|
||||
require_cmd jq
|
||||
|
||||
if ! [[ "$max_tokens" =~ ^[0-9]+$ ]]; then
|
||||
die "ANTHROPIC_MAX_TOKENS must be numeric"
|
||||
fi
|
||||
|
||||
local payload
|
||||
payload="$(jq -n \
|
||||
--arg model "$model" \
|
||||
--arg system "$system_prompt" \
|
||||
--arg user "$user_prompt" \
|
||||
--argjson max_tokens "$max_tokens" \
|
||||
'{
|
||||
model: $model,
|
||||
system: $system,
|
||||
max_tokens: $max_tokens,
|
||||
messages: [
|
||||
{
|
||||
role: "user",
|
||||
content: [{type: "text", text: $user}]
|
||||
}
|
||||
]
|
||||
}')"
|
||||
|
||||
local response
|
||||
response="$(HTTP_TIMEOUT_SECONDS="$timeout" http_json POST "$api_url" "$payload" \
|
||||
"x-api-key: $ANTHROPIC_API_KEY" \
|
||||
"anthropic-version: 2023-06-01")"
|
||||
|
||||
local output
|
||||
output="$(printf '%s' "$response" | jq -r '.content[0].text // empty')"
|
||||
if [[ -z "$output" ]]; then
|
||||
die "Anthropic response missing content"
|
||||
fi
|
||||
|
||||
printf '%s\n' "$output"
|
||||
}
|
||||
Reference in New Issue
Block a user