name = "Helicone" env = ["HELICONE_API_KEY"] npm = "@ai-sdk/openai-compatible" # Reasoning HTTP format (accessed 2026-06-25): # POST /v1/chat/completions accepts top-level `reasoning_effort` = minimal, low, # medium, or high and `reasoning_options.budget_tokens` = an integer from # -9007199254740991 through 9007199254740991 (gateway schema, not model bounds). # POST /v1/responses uses `reasoning.effort` plus the same nonstandard # `reasoning_options.budget_tokens`; actual valid values and bounds are model-native. # Anthropic routes translate any supplied effort to `thinking.type = "enabled"` # and `thinking.budget_tokens` (explicit budget, else floor(max_tokens / 2)); # Google routes translate to `generationConfig.thinkingConfig.thinkingLevel` for # Gemini 3+, or `thinkingBudget = -1` for Gemini 2.5, then apply an explicit budget. # These translators rebuild native payloads, stripping the two generic fields. # Without effort, Gemini 2.5 gets `thinkingBudget = 0`; Gemini 3+ defaults to low. # OpenAI routes pass native Chat/Responses shapes through. The Helicone-provider # route sends GPT Pro/Codex to Responses even when the gateway request used Chat; # other non-native Responses requests are converted through Chat first. # Model comments record native exceptions, including disable sentinels and bounds. # Sources: # https://docs.helicone.ai/gateway/concepts/reasoning # https://docs.helicone.ai/rest/ai-gateway/post-v1-chat-completions # https://github.com/Helicone/helicone/blob/4df16a30ab79bc6f31e4b3a29aca179d767db878/packages/llm-mapper/transform/providers/openai/request/toAnthropic.ts # https://github.com/Helicone/helicone/blob/4df16a30ab79bc6f31e4b3a29aca179d767db878/packages/llm-mapper/transform/providers/openai/request/toGoogle.ts # https://github.com/Helicone/helicone/blob/4df16a30ab79bc6f31e4b3a29aca179d767db878/packages/cost/models/providers/helicone.ts api = "https://ai-gateway.helicone.ai/v1" doc = "https://helicone.ai/models"