From 526cb4dbb3d1272097435262895b2a81304a33e0 Mon Sep 17 00:00:00 2001 From: Simon <10131203+gaomeng1900@users.noreply.github.com> Date: Tue, 13 Jan 2026 13:58:21 +0800 Subject: [PATCH] chore: rename OpenAIClient; clean up old notes --- ...nAICompatibleClient.ts => OpenAIClient.ts} | 3 ++ packages/llms/src/index.ts | 35 +------------------ 2 files changed, 4 insertions(+), 34 deletions(-) rename packages/llms/src/{OpenAICompatibleClient.ts => OpenAIClient.ts} (99%) diff --git a/packages/llms/src/OpenAICompatibleClient.ts b/packages/llms/src/OpenAIClient.ts similarity index 99% rename from packages/llms/src/OpenAICompatibleClient.ts rename to packages/llms/src/OpenAIClient.ts index 4ad3051..be6f3af 100644 --- a/packages/llms/src/OpenAICompatibleClient.ts +++ b/packages/llms/src/OpenAIClient.ts @@ -5,6 +5,9 @@ import { InvokeError, InvokeErrorType } from './errors' import type { InvokeOptions, InvokeResult, LLMClient, LLMConfig, Message, Tool } from './types' import { modelPatch, zodToOpenAITool } from './utils' +/** + * Client for OpenAI compatible APIs + */ export class OpenAIClient implements LLMClient { config: Required private fetch: typeof globalThis.fetch diff --git a/packages/llms/src/index.ts b/packages/llms/src/index.ts index 78305fe..3a79a17 100644 --- a/packages/llms/src/index.ts +++ b/packages/llms/src/index.ts @@ -1,37 +1,4 @@ -/** - * @topic LLM 与主流程的隔离 - * @reasoning - * 将 llm 的调用和主流程分开是复杂的, - * 因为 agent 的 tool call 通常集成在 llm 模块中,而而先得到 llm 返回,然后处理工具调用 - * tools 和 llm 调用的逻辑不可避免地耦合在一起,tool 的执行又和主流程耦合在一起 - * 而 history 的维护和更新逻辑,又必须嵌入多轮 tool call 中 - * @reasoning - * - 放弃框架提供的自动的多轮调用,每轮调用都由主流程发起 - * - 理想情况下,llm 调用应该获得 structured output,然后由额外的模块触发 tool call,目前模型和框架都无法实现 - * - 当前只能将 llm api 和 本地 tool call 耦合在一起,不关心其中的衔接方式 - * @conclusion - * - @llm responsibility boundary: - * - call llm api with given messages and tools - * - invoke tool call and get the result of the tool - * - return the result to main loop - * - @main_loop responsibility boundary: - * - maintain all behaviors of an **agent** - * @conclusion - * - 这里的 llm 模块不是 agent,只负责一轮 llm 调用和工具调用,无状态 - */ -/** - * @topic 结构化输出 - * @facts - * - 几乎所有模型都支持 tool call schema - * - 几乎所有模型都支持返回 json - * - 只有 openAI/grok/gemini 支持 schema 并保证格式 - * - 主流模型都支持 tool_choice: required - * - 除了 qwen 必须指定一个函数名 (9月上新后支持) - * @conclusion - * - 永远使用 tool call 来返回结构化数据,禁止模型直接返回(视为出错) - * - 不能假设 tool 参数合法,必须有修复机制,而且修复也应该使用 tool call 返回 - */ -import { OpenAIClient } from './OpenAICompatibleClient' +import { OpenAIClient } from './OpenAIClient' import { DEFAULT_API_KEY, DEFAULT_BASE_URL,