Skip to content

Adapter (适配器)

适配器模块把外部模型、工具与协议生态接入 Rejelly。适配器按职责分成两类:

  • 模型适配器:把 provider 模型包装成 Rejelly ModelAdapter,见 Model Adapter (OpenAI / Gemini)
  • 工具 / 来源适配器:把外部工具生态转换成 Rejelly ToolDefinition,见 MCPLangChain

适配器已从 @rejelly/core 中移出,以独立包形式发布。按需安装对应包即可:

用途
@rejelly/adapter-openaiOpenAI 模型适配器,提供 createOpenAIAdapter
@rejelly/adapter-geminiGemini 模型适配器,提供 createGeminiAdapter
@rejelly/adapter-mcpMCP 工具 / 资源 / prompt 集成,提供 equipMCP / fromMCPTool
@rejelly/adapter-langchainLangChain 工具适配,提供 fromLangChainTool

多模态工具结果 (Multimodal tool results)

工具可以返回模型可见的多模态内容(如图片),方式是用 @rejelly/coretoolContent(parts: ContentPart[]) 包裹结果。普通 JSON / 字符串结果仍按原样字符串化,只有被 toolContent 标记的对象会作为 MessageContent 直接进入对话。两类适配器在不同侧各自处理:

Model adapter(OpenAI / Gemini)—— 发送侧自动拆分。 多数 provider 的 tool / function 结果消息只能携带文本。当某条 tool 消息含媒体(如经 toolContent 返回的图片)时,消息转换器会自动把它拆成两条:一条纯文本的 tool 结果 + 紧随其后的一条 user 消息承载媒体,从而让模型真正“看到”图。纯文本工具结果不受影响,仍是单条。

  • OpenAItoOpenAIMessages):tool(文本,纯媒体时用占位句)→ userimage_url)。
  • GeminitoGeminiMessages):functionResponse(文本)→ user Content(inlineData)。注意这会产生连续两个 client-side 轮(function 紧接 user)。

这是适配器在“provider 能力边界”上做的归一化:知道哪种 provider 不能在工具结果里带图的,只有适配器层。因此该转换放在适配器、对所有 policy 与上层 Agent 透明生效,无需 metatool 或额外往返。

工具 / 来源 adapter(MCP / LangChain)—— 接收侧转成 toolContent 当工具自身返回多模态内容块(含图片)时,适配器会把它转换成 toolContent,以便作为原生模型可见内容流入上面的发送侧;纯文本或未识别的结果原样透传,不改变既有行为。

  • MCPformatCallToolResult):image 块 → 图片 ContentPartresource 块按文本/标签降级。
  • LangChainfromLangChainTool):content-block 数组中的经典 image_url 与标准 imagesource_type: "base64" | "url")块 → 图片 ContentPart

Released under the Apache License 2.0. llm.txt