ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

开源我们的Delphi工具包:五大源自构建AI应用的开发库与TaoToken配置实践

开源我们的Delphi工具包:五大源自构建AI应用的开发库与TaoToken配置实践 1. Delphi 开发者接入大模型为什么总卡在“通道”这一步如果你用 Delphi 写过稍微现代一点的桌面应用大概率动过“接个大模型进来”的念头。比如让工具自动总结一份 Word 报告、把 Excel 里的客户数据转成自然语言、或者干脆在 IDE 里挂一个能读代码的 AI 助手。想法很顺真动手就会发现麻烦不在 Delphi 本身而在“怎么把请求发出去、怎么管住一堆 Key、怎么让不同工具共用同一条通道”。我最近在折腾一套 Delphi 工具链核心场景是用 Delphi 构建 AI 应用同时把 OfficeXML 解析、MCP 协议对接这些能力串起来。过程中最耗时间的不是写解析逻辑而是配置层——每个 AI 工具都要单独填 Base URL、单独填 Key、单独处理模型名Cline 一套、CC Switch 一套、自己写的 Delphi 客户端又一套。改一次 Key 要翻五个配置文件这种体验对独立开发者很不友好。TaoToken 在这里扮演的角色就是把这些分散的入口收敛成一条统一通道。它提供兼容 OpenAI 风格的 API 地址你只需要维护一个 Key就能让 Cline、CC Switch 以及你自己的 Delphi HTTP 客户端走同一条路。对 Delphi 项目来说这意味着System.Net.HttpClient里那个TGraphHttpClient式的封装可以复用不用为每个模型供应商改一遍请求头。这篇文章面向的是已经会用 Delphi 写业务代码、但对 AI 接入链路还比较陌生的开发者。我会先给出一份可复制的config.toml与settings.json骨架再演示在 Cline 和 CC Switch 里验证 API 连通性的具体步骤最后把 OfficeXML4D、MCP 服务器这些库怎么和这条通道配合讲清楚。全程不需要你装 Node.js也不需要额外部署中间层。2. TaoToken 前置准备一个 Key 打通 Delphi 工具链在写任何 Delphi 代码之前先把通道本身跑通。TaoToken 的接入信息很集中API 根地址是https://taotoken.net/api官网入口在https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content。你需要在控制台里创建一个 API Key这个 Key 后面会同时出现在 Cline、CC Switch 和 Delphi 客户端的配置里。创建 Key 的入口在控制台的 API Keys 页面地址是https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite。进去之后新建一个 Key复制出来先存到临时文本里。注意这个 Key 只在创建时完整显示一次关掉页面就看不到了所以别急着刷新。这里有个容易踩的坑很多人会把官网首页地址当成 API 地址填进工具里。官网是给人看的API 根地址是https://taotoken.net/api两者不能混。Cline 这类工具通常要求你填Base URL填成https://taotoken.net/api即可它自己会拼接/v1/chat/completions这类路径。如果你填了带 UTM 的官网地址请求会打到网页路由上返回的是一堆 HTML不是 JSON。模型选择上TaoToken 支持对话模型和编码模型两类。日常验证连通性用对话模型就够长期跑 Agent 或编码任务建议单独看 Coding Plan入口在https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite。如果你只是想先确认“这条路能不能走通”用模型对话页面手动发一条消息最快地址是https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite。注意API Key 属于敏感凭证不要写进会提交到 Git 的配置文件里。下面给的骨架里我用占位符sk-xxxx你本地替换成真实 Key 后记得把配置文件加入.gitignore。3. 可复制配置config.toml 与 settings.json 骨架Delphi 生态里配置格式没有统一标准但 TOML 和 JSON 是最常见的两种。我习惯把“通道级”配置放 TOML把“工具级”配置放 JSON这样换 Key 时只改一处。下面这份config.toml是给 Delphi 客户端和 MCP 服务器共用的骨架。# config.toml —— Delphi AI 工具链统一通道配置 [provider] name taotoken base_url https://taotoken.net/api api_key sk-xxxx default_model gpt-4o-mini timeout_seconds 60 [provider.headers] Content-Type application/json Accept application/json [office] # OfficeXML4D 解析时的临时目录与最大文件尺寸 temp_dir C:\\Temp\\delphi_ai max_docx_mb 50 max_xlsx_mb 100 [mcp] # Delphi MCP 服务器监听配置 transport stdio server_name delphi-mcp auto_discover_tools true这份配置里base_url和api_key是核心。default_model可以先填一个便宜的对话模型等连通性验证通过再换成编码模型。timeout_seconds给 60 秒是因为有些模型首 token 返回慢设太短会误判为失败。接下来是给 Cline 和 CC Switch 用的settings.json骨架。这两个工具都支持自定义 OpenAI 兼容端点字段名略有差异我把它拆成两个块你按工具取用。{ cline: { apiProvider: openai, openAiBaseUrl: https://taotoken.net/api, openAiApiKey: sk-xxxx, openAiModelId: gpt-4o-mini, openAiLegacyFormat: false }, ccSwitch: { provider: custom, baseUrl: https://taotoken.net/api, apiKey: sk-xxxx, model: gpt-4o-mini, wireApi: chat } }openAiLegacyFormat这个字段值得单独说一句。Cline 早期版本用的是旧版补全接口新版走 chat 接口。如果你填了false还是报 404把它改成true试试反过来也一样。这个字段是 Cline 侧的行为和 TaoToken 无关但排查时容易混淆。配置写完后Delphi 侧读取 TOML 可以用System.IniFiles的变体或者引入一个轻量 TOML 解析单元。我自己的做法是写一个TAppConfig类把base_url和api_key暴露成属性MCP 服务器和 HTTP 客户端都从这里取。这样以后换供应商只改config.toml一行。4. 验证请求在 Cline 与 CC Switch 中确认连通性配置写完不等于通了。我见过太多人配置文件填得漂漂亮亮一发请求就 401然后开始怀疑人生。下面这套验证流程是我自己踩过坑之后固定下来的顺序。第一步先用 TaoToken 的模型对话页面手动发一条消息。打开https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite选一个对话模型输入“你好”看是否正常返回。这一步能排除 Key 本身无效、账户余额不足这类问题。如果这里就失败后面所有工具都不用试了。第二步在 Cline 里验证。打开 Cline 的设置面板把settings.json里cline块的内容填进去。保存后新建一个对话输入一句简单指令比如“用一句话说明什么是 Delphi”。如果返回正常说明 Cline 到 TaoToken 的链路通了。如果报401 Unauthorized检查 Key 是否复制完整有没有多带空格。如果报404 Not Found检查openAiBaseUrl是不是写成了带/v1的地址——TaoToken 的根地址不带/v1工具会自己拼。第三步在 CC Switch 里验证。CC Switch 的配置界面字段更少把baseUrl、apiKey、model三项填好即可。它的验证方式是发一条测试请求成功后会显示模型返回的文本。这里有个细节CC Switch 的wireApi字段如果填chat走对话接口填completion走补全接口。TaoToken 两种都支持但建议先用chat兼容性更好。第四步回到 Delphi 侧做一次原生请求。这一步很多人跳过结果工具里能用、自己代码里不能用。用System.Net.HttpClient发一个最小请求uses System.Net.HttpClient, System.Net.URLClient, System.SysUtils; function TestTaoToken(const AApiKey: string): string; var Http: THTTPClient; Body: TStringStream; Resp: IHTTPResponse; Json: string; begin Http : THTTPClient.Create; try Http.CustomHeaders[Authorization] : Bearer AApiKey; Http.CustomHeaders[Content-Type] : application/json; Json : {model:gpt-4o-mini,messages:[{role:user,content:ping}]}; Body : TStringStream.Create(Json, TEncoding.UTF8); try Resp : Http.Post(https://taotoken.net/api/v1/chat/completions, Body); Result : Resp.ContentAsString(TEncoding.UTF8); finally Body.Free; end; finally Http.Free; end; end;这段代码跑通说明 Delphi 原生 HTTP 栈也能走这条通道。注意Post的 URL 里带了/v1/chat/completions因为这里是直接调接口不是交给工具去拼。如果你在config.toml里存的是根地址代码里要自己补全路径。提示如果 Delphi 请求返回Could not load SSL library说明你的System.Net.HttpClient没配好 OpenSSL。Delphi 12 默认用系统 TLS一般不需要额外 DLL老版本可能需要把libssl和libcrypto放到 exe 同目录。5. 本篇常见错排查从 401 到 MCP 工具不发现排障这部分我按“症状 → 原因 → 处理”来写都是实际遇到过的。症状一401 Unauthorized。最常见的原因是 Key 复制时带了首尾空格或者把 Key 填到了model字段里。检查config.toml和settings.json里api_key的值确保是sk-开头的一整串。另一个可能是 Key 被删除或过期去控制台 API Keys 页面确认状态。症状二404 Not Found。九成是 Base URL 写错。TaoToken 的根地址是https://taotoken.net/api不要写成https://taotoken.net/api/v1也不要写成官网首页。工具内部会拼接路径你多写一段就变成/api/v1/v1/chat/completions自然 404。症状三请求超时。先确认网络能访问taotoken.net。如果浏览器能打开官网但 Delphi 请求超时检查是不是公司网络对非标准端口做了限制。TaoToken 走 443 标准端口一般不受影响。另一个可能是timeout_seconds设太短改成 120 再试。症状四MCP 服务器启动后工具列表为空。Delphi MCP 服务器用 RTTI 自动发现工具如果你的工具方法没有加正确的特性标注或者方法不是published可见性就不会被扫到。检查你的工具类是否继承自约定的基类方法上是否有[MCPTool]之类的标注。另外auto_discover_tools在config.toml里要设为true。症状五OfficeXML4D 解析 docx 报 XML 格式错误。这种情况通常是文件本身不是标准 OOXML比如是.doc改后缀来的。OfficeXML4D 只处理 Office Open XML不处理老的二进制格式。用 Word 另存为.docx再试。另外注意max_docx_mb限制超过尺寸会被拒绝。症状六Cline 里模型列表拉不出来。Cline 会尝试调/v1/models接口。TaoToken 支持这个接口但如果你的 Key 权限受限可能返回空列表。这种情况下手动填openAiModelId即可不影响对话功能。排查时有个通用技巧把请求的完整 URL 和响应状态码打出来。Delphi 里用Resp.StatusCode和Resp.ContentAsStringCline 和 CC Switch 一般在日志面板里能看到。看到具体数字比“连不上”三个字有用得多。6. 把 OfficeXML 与 MCP 接进同一条通道前面验证的是“通道能通”现在说“通道通了之后能干什么”。Delphi 工具包里有两个库和 AI 接入关系最紧OfficeXML4D 和 Delphi MCP 服务器。OfficeXML4D 负责读写 Word 和 Excel纯 Delphi 实现不依赖 Office 安装。典型场景是用户上传一份.docx合同你的 Delphi 应用解析出段落和表格拼成 prompt 发给模型做摘要。解析部分用TWordDocumentFactory发送部分用第 4 节那个TestTaoToken的封装。两者之间用config.toml里的[office]段控制临时目录和尺寸上限。MCP 服务器则是把 Delphi 的能力暴露给 AI 助手。比如你写了一个查询本地数据库的工具方法通过 MCP 协议注册后Claude 这类助手就能调用它。Delphi MCP 服务器用 RTTI 自动发现工具你只需要在方法上加标注。它支持 Windows 和 Linux传输方式在config.toml的[mcp]段里配stdio或http。这里有个组合玩法把 OfficeXML4D 的解析能力包装成一个 MCP 工具AI 助手就能直接读你本地的 Word 文件。配置上MCP 服务器读config.toml拿base_url和api_keyOfficeXML4D 读同一份配置拿临时目录。一份配置两个库共用换 Key 时只改一处。如果你打算长期跑编码类 Agent建议单独配置 Coding Plan入口在https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite。它和普通对话通道的区别在于计费和模型池适合高频调用场景。接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite里面有各语言的请求示例Delphi 部分可以参考 HTTP 客户端的写法自己封装。最后说一个我自己的习惯所有 AI 请求都走一个统一的TAIChannel类这个类从config.toml读配置对外只暴露Ask和AskStream两个方法。OfficeXML4D 解析完的内容、MCP 工具收到的参数都通过这个类发出去。这样以后不管换哪个供应商改的都是TAIChannel内部业务代码一行不动。Delphi 的接口式设计在这里很占便宜TAIChannel定义成接口测试时用 mock 实现生产时用真实 HTTP 实现切换成本几乎为零。
返回列表