wenyi文译开发者指南:从Provider适配器到操作路由,接入你的专属LLM
wenyi文译开发者指南从Provider适配器到操作路由接入你的专属LLM【免费下载链接】wenyi将被语言阻隔的作品带到读者的语言中。Bringing literature into your language.项目地址: https://gitcode.com/gh_mirrors/we/wenyiwenyi 文译是一款面向长篇小说的开源 LLM 翻译工具它的 LLM 层采用「Provider 适配器 操作路由」的双层设计你只需实现一个轻量的 Provider 适配器就能把 DeepSeek、OpenAI、Ollama 或任意自建模型接入翻译流水线再借助操作路由为翻译、审校、润色等不同步骤分别指定 strong / cheap / fast 三个档位的模型实现质量与成本的最优平衡。一、LLM 层架构总览10个Provider15个操作wenyi 的核心模型层位于packages/core/wenyi_core/llm/各模块职责清晰模块职责base.py定义所有 Provider 实现的统一接口LLMClient含用量统计与事件上报transport.pyProviderAdapter基类管理 SDK 连接、重试与输出上限registry.pyProvider 注册表kind 名称 → 适配器类与选项类operations.py操作注册表全部 15 个模型操作的声明与默认档位routing.py将操作解析为不可变的路由快照含推理指纹router.pyRoutedLLMClient按路由调用适配器处理失败切换failoverconfiguration.py配置 schemaproviders / models / tiers / routes 四层结构retrying.py可重试错误判定与退避重试内置 10 个 Provider见 registry.pydeepseek、openai、openrouter、opencode-go、openai-compatible、orcarouter、ollama、vllm、gemini以及离线的fake测试用。二、第一步理解 Provider 适配器的最小契约接入一个新模型本质是实现 transport.py 中ProviderAdapter的三个约定声明类属性default_base_url默认端点、default_api_key_envAPI Key 环境变量名、requires_api_key是否需要密钥定义选项模型一个 PydanticOptions类描述该 Provider 特有的请求参数如thinking、reasoning_effort实现_request方法接收消息列表与ResolvedModel调用 SDK 并返回文本内容。如果你接入的是OpenAI 兼容端点Ollama、vLLM 及大多数中转网关都适用可以直接继承 providers/_openai_compatible.py 中的OpenAICompatibleBaseClient它已封装好 SDK 连接、JSON 模式注入、用量归一化与空响应处理只需重写_build_request_kwargs构造请求参数即可——参考 providers/openai.py 中仅 60 行的完整实现。若端点协议不同如 providers/gemini.py则直接继承ProviderAdapter自行实现_request与_normalize_usage。三、第二步注册你的适配器到 Provider 注册表wenyi 的 Provider 不是发现式加载而是显式注册。以 providers/deepseek.py 为例一个完整适配器由三部分组成客户端类如DeepSeekClient负责请求构造与用量归一化选项类如DeepSeekOptions声明thinking等专属参数可选的preset_models()提供三档默认模型让用户可以一行preset开箱即用。然后在 registry.py 的PROVIDERS中登记一行ProviderSpecProviderSpec(myprovider, myprovider, MyClient, MyOptions)注册后配置校验validate_connection/validate_model、路由解析、凭证检查都会自动走你的实现无需改动流水线任何代码。注意 registry.py 会对模型选项做白名单保护api_key、base_url、model等关键字段禁止被用户参数覆盖保证路由与凭证归属不被篡改。四、第三步操作路由为每个步骤挑选合适的模型wenyi 把翻译流程拆成 15 个注册的操作operations.py例如language.detect语言检测→ 默认cheap档translation.body正文翻译→ 默认strong档synopsis.chapter章节摘要→ 默认fast档review.verify/review.arbitrate审校取证与仲裁→strong档且标记为可恢复对话操作路由的三个层级routing.pytiers 档位strong/cheap/fast各自映射到一个模型配置文件覆盖大多数场景routes 覆盖单独为某个操作指定模型或档位fallbacks 备用为主路由配置备用模型主模型调用失败时自动切换可恢复对话类操作除外避免证据链断裂。解析结果是不可变的ResolvedRoute快照并附带 SHA-256 推理指纹——这让续跑、恢复和用量统计都能精确识别同一次推理身份同一模型改名或改参后不会被误用。五、最快上手方法4行配置接入你的LLMwenyi 读取当前目录的 config.yaml最简配置只需一个预设llm: preset: deepseek预设会自动展开为default连接、三档模型与档位映射展开逻辑见 configuration.py。想用自己的 Provider 并精细路由时用完整的四层结构llm: providers: mine: { kind: myprovider, base_url: https://llm.example.com/v1, api_key_env: MY_API_KEY } models: strong_m: { provider: mine, model: my-model-9b, max_output_tokens: 16384 } tiers: strong: strong_m cheap: strong_m fast: strong_m routes: translation.body: model: strong_m fallbacks: [cheap_m] # 主模型失败自动切换保存后可运行uv run wenyi models list查看生效的路由计划。详细的配置字段说明见官方文档 docs/zh/configuration.md 的模型与操作路由一节。六、开发验证不花一分钱的测试路径fake 预设preset: fake提供离线的 providers/fake.py无需任何 API Key 即可跑通全流程适合 CI 与本地调试单元测试参考packages/core/tests/test_llm_routing.py 演示了路由解析断言test_storage_injection.py 展示依赖注入模式用量与事件每次调用自动记录 token 用量含缓存命中并上报llm_request_started/llm_request_failed等事件接入新 Provider 后这些观测能力零成本获得。总结wenyi 的 LLM 层把接入模型拆成了两个正交的问题怎么调用Provider 适配器与何时用哪个模型操作路由。实现适配器只需继承基类并注册一行配置路由只需编辑 YAML。得益于不可变路由快照、推理指纹与统一用量账本你的专属 LLM 接入后即刻享有重试、失败切换、预算限额与完整观测——这正是把长篇小说高质量带入读者语言的工程基础。【免费下载链接】wenyi将被语言阻隔的作品带到读者的语言中。Bringing literature into your language.项目地址: https://gitcode.com/gh_mirrors/we/wenyi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →