Files
bifrost/docs/openapi/schemas/inference/chat.yaml
Beyhan Oğur 880f412e2c first commit
2026-04-26 21:52:23 +03:00

674 lines
13 KiB
YAML

# Chat Completions API schemas
ChatCompletionRequest:
type: object
required:
- model
- messages
properties:
model:
type: string
description: Model in provider/model format (e.g., openai/gpt-4)
example: openai/gpt-4
messages:
type: array
items:
$ref: '#/ChatMessage'
description: List of messages in the conversation
fallbacks:
type: array
items:
type: string
description: Fallback models in provider/model format
stream:
type: boolean
description: Whether to stream the response
frequency_penalty:
type: number
minimum: -2.0
maximum: 2.0
logit_bias:
type: object
additionalProperties:
type: number
logprobs:
type: boolean
max_completion_tokens:
type: integer
metadata:
type: object
additionalProperties: true
modalities:
type: array
items:
type: string
parallel_tool_calls:
type: boolean
presence_penalty:
type: number
minimum: -2.0
maximum: 2.0
prompt_cache_key:
type: string
reasoning:
$ref: '#/ChatReasoning'
response_format:
type: object
description: Format for the response
safety_identifier:
type: string
service_tier:
type: string
stream_options:
$ref: '#/ChatStreamOptions'
store:
type: boolean
temperature:
type: number
minimum: 0
maximum: 2
tool_choice:
$ref: '#/ChatToolChoice'
tools:
type: array
items:
$ref: '#/ChatTool'
seed:
type: integer
description: Deterministic sampling seed
top_p:
type: number
minimum: 0
maximum: 1
description: Nucleus sampling parameter
top_logprobs:
type: integer
minimum: 0
maximum: 20
description: Number of most likely tokens to return at each position
stop:
oneOf:
- type: string
- type: array
items:
type: string
description: Up to 4 sequences where the API will stop generating tokens
prediction:
$ref: '#/ChatPrediction'
prompt_cache_retention:
type: string
enum: [in-memory, 24h]
description: Prompt cache retention policy
web_search_options:
$ref: '#/ChatWebSearchOptions'
truncation:
type: string
user:
type: string
verbosity:
type: string
enum: [low, medium, high]
ChatMessage:
type: object
required:
- role
properties:
role:
$ref: '#/ChatMessageRole'
name:
type: string
content:
$ref: '#/ChatMessageContent'
tool_call_id:
type: string
description: For tool messages
refusal:
type: string
audio:
$ref: '#/ChatAudioMessageAudio'
reasoning:
type: string
reasoning_details:
type: array
items:
$ref: '#/ChatReasoningDetails'
annotations:
type: array
items:
$ref: '#/ChatAssistantMessageAnnotation'
tool_calls:
type: array
items:
$ref: '#/ChatAssistantMessageToolCall'
ChatMessageRole:
type: string
enum:
- assistant
- user
- system
- tool
- developer
ChatMessageContent:
oneOf:
- type: string
- type: array
items:
$ref: '#/ChatContentBlock'
description: Message content - can be a string or array of content blocks
ChatContentBlock:
type: object
required:
- type
properties:
type:
type: string
enum: [text, image_url, input_audio, file, refusal]
text:
type: string
refusal:
type: string
image_url:
$ref: '#/ChatInputImage'
input_audio:
$ref: '#/ChatInputAudio'
file:
$ref: '#/ChatInputFile'
cache_control:
$ref: './common.yaml#/CacheControl'
ChatInputImage:
type: object
required:
- url
properties:
url:
type: string
detail:
type: string
enum: [low, high, auto]
ChatInputAudio:
type: object
required:
- data
properties:
data:
type: string
format:
type: string
ChatInputFile:
type: object
properties:
file_data:
type: string
file_id:
type: string
filename:
type: string
file_type:
type: string
ChatReasoning:
type: object
properties:
effort:
type: string
description: Reasoning effort level
enum: [none, minimal, low, medium, high, xhigh]
max_tokens:
type: integer
ChatStreamOptions:
type: object
properties:
include_obfuscation:
type: boolean
include_usage:
type: boolean
ChatToolChoice:
oneOf:
- type: string
enum: [none, auto, required]
- $ref: '#/ChatToolChoiceStruct'
ChatToolChoiceStruct:
type: object
required:
- type
properties:
type:
type: string
enum: [none, any, required, function, allowed_tools, custom]
function:
$ref: '#/ChatToolChoiceFunction'
allowed_tools:
$ref: '#/ChatToolChoiceAllowedTools'
ChatToolChoiceFunction:
type: object
required:
- name
properties:
name:
type: string
ChatToolChoiceAllowedTools:
type: object
properties:
mode:
type: string
enum: [auto, required]
tools:
type: array
items:
$ref: '#/ChatToolChoiceAllowedToolsTool'
ChatToolChoiceAllowedToolsTool:
type: object
required:
- type
properties:
type:
type: string
function:
$ref: '#/ChatToolChoiceFunction'
ChatTool:
type: object
required:
- type
properties:
type:
type: string
enum: [function, custom]
function:
$ref: '#/ChatToolFunction'
custom:
$ref: '#/ChatToolCustom'
cache_control:
$ref: './common.yaml#/CacheControl'
ChatToolFunction:
type: object
required:
- name
properties:
name:
type: string
description:
type: string
parameters:
$ref: '#/ToolFunctionParameters'
strict:
type: boolean
ToolFunctionParameters:
type: object
properties:
type:
type: string
description:
type: string
required:
type: array
items:
type: string
properties:
type: object
additionalProperties: true
enum:
type: array
items:
type: string
additionalProperties:
type: boolean
ChatToolCustom:
type: object
properties:
format:
$ref: '#/ChatToolCustomFormat'
ChatToolCustomFormat:
type: object
required:
- type
properties:
type:
type: string
grammar:
$ref: '#/ChatToolCustomGrammarFormat'
ChatToolCustomGrammarFormat:
type: object
required:
- definition
- syntax
properties:
definition:
type: string
syntax:
type: string
enum: [lark, regex]
ChatReasoningDetails:
type: object
properties:
id:
type: string
index:
type: integer
type:
type: string
enum: [reasoning.summary, reasoning.encrypted, reasoning.text]
summary:
type: string
text:
type: string
signature:
type: string
data:
type: string
ChatAssistantMessageAnnotation:
type: object
properties:
type:
type: string
url_citation:
$ref: '#/ChatAssistantMessageAnnotationCitation'
ChatAssistantMessageAnnotationCitation:
type: object
properties:
start_index:
type: integer
end_index:
type: integer
title:
type: string
url:
type: string
sources:
type: object
type:
type: string
ChatAssistantMessageToolCall:
type: object
required:
- function
properties:
index:
type: integer
type:
type: string
id:
type: string
function:
$ref: '#/ChatAssistantMessageToolCallFunction'
ChatAssistantMessageToolCallFunction:
type: object
properties:
name:
type: string
arguments:
type: string
ChatAudioMessageAudio:
type: object
properties:
id:
type: string
data:
type: string
expires_at:
type: integer
transcript:
type: string
ChatCompletionResponse:
type: object
properties:
id:
type: string
choices:
type: array
items:
$ref: '#/BifrostResponseChoice'
created:
type: integer
model:
type: string
object:
type: string
service_tier:
type: string
system_fingerprint:
type: string
usage:
$ref: './usage.yaml#/BifrostLLMUsage'
extra_fields:
$ref: './common.yaml#/BifrostResponseExtraFields'
search_results:
type: array
items:
$ref: '#/PerplexitySearchResult'
videos:
type: array
items:
$ref: '#/VideoResult'
citations:
type: array
items:
type: string
BifrostResponseChoice:
type: object
properties:
index:
type: integer
finish_reason:
type: string
log_probs:
$ref: '#/BifrostLogProbs'
text:
type: string
description: For text completions
message:
$ref: '#/ChatMessage'
description: For non-streaming chat completions
delta:
$ref: '#/ChatStreamResponseChoiceDelta'
description: For streaming chat completions
BifrostLogProbs:
type: object
properties:
content:
type: array
items:
$ref: '#/ContentLogProb'
refusal:
type: array
items:
$ref: '#/LogProb'
text_offset:
type: array
items:
type: integer
token_logprobs:
type: array
items:
type: number
tokens:
type: array
items:
type: string
top_logprobs:
type: array
items:
type: object
additionalProperties:
type: number
ContentLogProb:
type: object
properties:
bytes:
type: array
items:
type: integer
logprob:
type: number
token:
type: string
top_logprobs:
type: array
items:
$ref: '#/LogProb'
LogProb:
type: object
properties:
bytes:
type: array
items:
type: integer
logprob:
type: number
token:
type: string
ChatStreamResponseChoiceDelta:
type: object
properties:
role:
type: string
content:
type: string
refusal:
type: string
audio:
$ref: '#/ChatAudioMessageAudio'
reasoning:
type: string
reasoning_details:
type: array
items:
$ref: '#/ChatReasoningDetails'
tool_calls:
type: array
items:
$ref: '#/ChatAssistantMessageToolCall'
ChatCompletionStreamResponse:
type: object
description: Streaming chat completion response (SSE format)
properties:
id:
type: string
choices:
type: array
items:
$ref: '#/BifrostResponseChoice'
created:
type: integer
model:
type: string
object:
type: string
usage:
$ref: './usage.yaml#/BifrostLLMUsage'
extra_fields:
$ref: './common.yaml#/BifrostResponseExtraFields'
PerplexitySearchResult:
type: object
description: Search result from Perplexity AI search
properties:
title:
type: string
url:
type: string
date:
type: string
last_updated:
type: string
snippet:
type: string
source:
type: string
VideoResult:
type: object
properties:
url:
type: string
thumbnail_url:
type: string
thumbnail_width:
type: integer
thumbnail_height:
type: integer
duration:
type: number
ChatPrediction:
type: object
description: Predicted output content for the model to reference (OpenAI only). Can reduce latency.
properties:
type:
type: string
description: Always "content"
content:
description: Predicted content (string or array of content parts)
oneOf:
- type: string
- type: array
items:
type: object
additionalProperties: true
ChatWebSearchOptions:
type: object
description: Web search options for chat completions (OpenAI only)
properties:
search_context_size:
type: string
enum: [low, medium, high]
description: Amount of search context to include
user_location:
$ref: '#/ChatWebSearchOptionsUserLocation'
ChatWebSearchOptionsUserLocation:
type: object
properties:
type:
type: string
description: Location type (e.g., "approximate")
approximate:
$ref: '#/ChatWebSearchOptionsUserLocationApproximate'
ChatWebSearchOptionsUserLocationApproximate:
type: object
properties:
city:
type: string
country:
type: string
description: Two-letter ISO country code (e.g., "US")
region:
type: string
description: Region or state (e.g., "California")
timezone:
type: string
description: IANA timezone (e.g., "America/Los_Angeles")