Skip to content

Filter 16: responses_to_chat_completions #499

Description

@leseb

Purpose

Convert enriched Responses API requests to Chat Completions format for backends that only speak /v1/chat/completions. This is the conversion counterpart to responses_proxy (#432), which forwards to native /v1/responses backends.

Behavior

  • Read responses.messages, responses.tools, responses.tool_choice from filter chain metadata
  • Build a /v1/chat/completions request body from Responses API state:
    • Map messages to chat completion message format
    • Map tool definitions to chat completion function/tool format
    • Map parameters: temperature, top_p, frequency_penalty, max_completion_tokens, reasoning_effort, service_tier, parallel_tool_calls, top_logprobs, presence_penalty, extra_body
    • Respect client's stream setting
    • Set stream_options.include_usage=true when streaming
    • Omit text response_format when tools are present
    • Pass prompt_cache_key if configured
  • Inject instructions as system message
  • Map provider errors → Responses API error codes
  • Structure conversion as a standalone module (convert.rs) with clear input/output types for reuse by Provider abstraction: unified request/response types #213

Config

filter: responses_to_chat_completions

Dependencies

Reference

Metadata

Metadata

Labels

No labels
No labels

Type

No fields configured for Task.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions