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.6.1.tbz
sha256=cb3b82428abcda76c02ec92f8103a4db28edf3f42795794a37135e9a3c40af96
sha512=11be8889ee25bee67b2be00553c42a4692bc73e5ce23985e8bb87f8a07e9d8f556b5a63b219fe5fe30366c8b0d4edae494afa80ccfbfcb112f1fa1e458de55bf
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)"
>