package ocaml-ai-sdk
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
OCaml AI SDK - Provider abstraction for AI models
Install
dune-project
Dependency
Authors
Maintainers
Sources
ocaml-ai-sdk-0.5.tbz
sha256=9e3437d6ebf48ec9f5d9a8afd62eaeece124023f02dbd87e4b291205fd309b72
sha512=605c10ed62c0cbc31a151b7031cc80a284d5c94231c1ef423ae7439572e3fadddab4a45f52eaeeef83973a8e324839b9fda03f9082deef1b6781353f63975510
doc/ocaml-ai-sdk.ai_provider_openrouter/Ai_provider_openrouter/Convert_prompt/index.html
Module Ai_provider_openrouter.Convert_promptSource
Convert SDK prompt messages to OpenRouter Chat Completions format.
Forked from Ai_provider_openai.Convert_prompt to mirror upstream @openrouter/ai-sdk-provider's src/chat/convert-to-openrouter-chat-messages.ts. The key differences from the OpenAI converter are:
- System messages are always wrapped in a single-element
textcontent-part array, even without cache control (upstream wire format). - User single-text messages switch from a plain
stringcontent to a one-element parts array iff acache_controlis resolved (message-level falls back to part-level). - User multi-part messages propagate message-level
cache_controlto the last text part only (per-part wins). No root-levelcache_controlon multi-part user messages. - Assistant part-level cache markers are hoisted to the root-level
cache_controlfield used by OpenRouter assistant messages. - Tool messages include a
namefield and a root-levelcache_control(message-level wins over per-result).
Per-part / per-message cache control is read via Cache_control_options.get_cache_control, which falls back to the Anthropic key for cross-provider prompt compatibility.
Source
type or_content_part = | Or_text of {text : string;cache_control : Cache_control.t option;
}| Or_image_url of {url : string;cache_control : Cache_control.t option;
}
Source
type openrouter_message = | System_msg of {content : string;cache_control : Cache_control.t option;
}| Developer_msg of {}| User_msg_single_text of {text : string;cache_control : Cache_control.t option;
}| User_msg_parts of {parts : or_content_part list;
}| Assistant_msg of {content : string option;tool_calls : or_tool_call list;cache_control : Cache_control.t option;
}| Tool_msg of {tool_call_id : string;tool_name : string;content : string;cache_control : Cache_control.t option;
}
Source
val convert_messages :
system_message_mode:Model_catalog.system_message_mode ->
Ai_provider.Prompt.message list ->
openrouter_message list * Ai_provider.Warning.t listConvert SDK messages to OpenRouter wire-format messages. Returns converted messages and any warnings generated.
Serialize an OpenRouter message to JSON.
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>