#!/usr/bin/env bash set -euo pipefail # Check for required API key : "${OPENROUTER_API_KEY:?Set OPENROUTER_API_KEY in your environment}" # Parse command-line arguments MODEL="" PROMPT="" SYSTEM_MSG="" MAX_TOKENS="" TEMPERATURE="" JSON_OUTPUT=false show_usage() { cat <&2 show_usage >&2 exit 1 ;; esac done # Validate required arguments if [[ -z "$MODEL" ]]; then echo "Error: --model is required" >&2 show_usage >&2 exit 1 fi if [[ -z "$PROMPT" ]]; then echo "Error: --prompt is required" >&2 show_usage >&2 exit 1 fi # Set defaults REFERER="${OPENROUTER_REFERER:-https://raw.works}" TITLE="${OPENROUTER_TITLE:-RAW.works}" # Build messages array MESSAGES="[" if [[ -n "$SYSTEM_MSG" ]]; then MESSAGES="${MESSAGES}{\"role\": \"system\", \"content\": $(printf '%s' "$SYSTEM_MSG" | jq -Rs .)}," fi MESSAGES="${MESSAGES}{\"role\": \"user\", \"content\": $(printf '%s' "$PROMPT" | jq -Rs .)}" MESSAGES="${MESSAGES}]" # Build request body REQUEST_BODY=$(cat <&2 cat "${TMP_RESPONSE}" >&2 rm -f "${TMP_RESPONSE}" exit 1 fi # Parse response RESPONSE=$(cat "${TMP_RESPONSE}") rm -f "${TMP_RESPONSE}" # Extract data from response CONTENT=$(echo "$RESPONSE" | jq -r '.choices[0].message.content // empty') PROMPT_TOKENS=$(echo "$RESPONSE" | jq -r '.usage.prompt_tokens // null') COMPLETION_TOKENS=$(echo "$RESPONSE" | jq -r '.usage.completion_tokens // null') TOTAL_TOKENS=$(echo "$RESPONSE" | jq -r '.usage.total_tokens // null') COST=$(echo "$RESPONSE" | jq -r '.usage.cost // null') # Output results if [[ "$JSON_OUTPUT" == true ]]; then # JSON output cat <