package ocaml-ai-sdk

  1. Overview
  2. Docs
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 text content-part array, even without cache control (upstream wire format).
  • User single-text messages switch from a plain string content to a one-element parts array iff a cache_control is resolved (message-level falls back to part-level).
  • User multi-part messages propagate message-level cache_control to the last text part only (per-part wins). No root-level cache_control on multi-part user messages.
  • Assistant part-level cache markers are hoisted to the root-level cache_control field used by OpenRouter assistant messages.
  • Tool messages include a name field and a root-level cache_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.

Sourcetype or_content_part =
  1. | Or_text of {
    1. text : string;
    2. cache_control : Cache_control.t option;
    }
  2. | Or_image_url of {
    1. url : string;
    2. cache_control : Cache_control.t option;
    }
Sourcetype or_function_call = {
  1. name : string;
  2. arguments : string;
}
Sourcetype or_tool_call = {
  1. id : string;
  2. type_ : string;
  3. function_ : or_function_call;
}
Sourcetype openrouter_message =
  1. | System_msg of {
    1. content : string;
    2. cache_control : Cache_control.t option;
    }
  2. | Developer_msg of {
    1. content : string;
    }
  3. | User_msg_single_text of {
    1. text : string;
    2. cache_control : Cache_control.t option;
    }
  4. | User_msg_parts of {
    1. parts : or_content_part list;
    }
  5. | Assistant_msg of {
    1. content : string option;
    2. tool_calls : or_tool_call list;
    3. cache_control : Cache_control.t option;
    }
  6. | Tool_msg of {
    1. tool_call_id : string;
    2. tool_name : string;
    3. content : string;
    4. cache_control : Cache_control.t option;
    }

Convert SDK messages to OpenRouter wire-format messages. Returns converted messages and any warnings generated.

Sourceval openrouter_message_to_json : openrouter_message -> Yojson.Basic.t

Serialize an OpenRouter message to JSON.