ARTICLE DETAIL

资讯详情

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

humanize-text源码深度解析:AI文本拟人化的多提供商LLM客户端与跨引擎翻译实现分析

humanize-text源码深度解析:AI文本拟人化的多提供商LLM客户端与跨引擎翻译实现分析 humanize-text源码深度解析AI文本拟人化的多提供商LLM客户端与跨引擎翻译实现分析【免费下载链接】humanize-textOpen-source text humanization pipeline with every intermediate step published. Two LLM rewrites at temp 1.3, then two hops across different NMT engines. Four documented methodologies you can read, modify, and run locally.项目地址: https://gitcode.com/gh_mirrors/hu/humanize-texthumanize-text 是一个开源的AI 文本拟人化流水线两段 LLM 拟人化改写温度 1.3 两次跨引擎机器翻译每一步中间产物都完整输出任何人都可以读懂、修改并在本地运行。它的核心亮点不在调用 LLM 改写——谁都会做——而在多提供商 LLM 客户端与跨引擎翻译链的工程设计。本文带你深入src/standard/源码看懂这两块关键实现。一、四步流水线一段 AI 文本如何去AI化 整个标准流水线Standard Pipeline是一条固定的 4 步链由 src/standard/pipeline.py 编排步骤引擎方向作用1LLMtemp 1.3英文 → 中文拟人化改写 语言切换2LLMtemp 1.3携带第 1 步历史中文 → 日语二次拟人化改写3Google Translate日语 → 芬兰语一轮翻译远距离语言结构破坏4Niutrans芬兰语 → 英文二轮翻译跨引擎重建这条链的设计逻辑是语言距离最大化英→中不同语系、无共享文字→ 日共享汉字但语法迥异→ 芬兰语SOV→SVO黏着语强制深度重组→ 英。每一步都让文本结构被重构一次任何单一引擎留下的指纹都无法存活。完整原理见 docs/pipeline.md。二、多提供商 LLM 客户端一套代码接 5 家 LLM Step 1 和 Step 2 的 LLM 调用全部收敛在 src/standard/llm_client.py 中。它没有为每家服务商写一套 SDK 代码而是只依赖一个事实这些服务商都提供 OpenAI 兼容的/chat/completions接口。2.1 提供商默认值表配置即代码模块顶部的PROVIDER_DEFAULTS字典是整个客户端的注册表Provider默认 Base URL默认模型deepseek默认api.deepseek.comdeepseek-chatopenrouteropenrouter.ai/api/v1deepseek/deepseek-chatatlascloudapi.atlascloud.ai/v1qwen/qwen3.5-flashorcarouterapi.orcarouter.ai/v1deepseek/deepseek-chatlitellm走 LiteLLM SDK支持 100 提供商deepseek/deepseek-chat2.2 配置解析优先级环境变量 TOML 默认值resolve_llm_config()函数把三层配置合并成最终运行参数优先级从高到低是环境变量LLM_PROVIDER、LLM_BASE_URL、LLM_MODEL、LLM_API_KEY以及DEEPSEEK_API_KEY、OPENROUTER_API_KEY等专属变量TOML 配置文件config/config.example.toml 中[llm]段且优先于旧版[pipeline]段向后兼容提供商内置默认值来自PROVIDER_DEFAULTS这套分层设计的好处是本地开发用 TOMLCI/容器化部署直接注入环境变量即可无需改文件。所有分支路径在 tests/test_llm_client.py 中都有对应单测覆盖约 15 个用例无需联网。2.3 请求发送URL 归一化 可选请求头chat_completions()负责真正的 HTTP 调用两个细节值得注意normalize_chat_completions_url()会自动补全/chat/completions后缀用户填https://api.deepseek.com或完整路径都能工作支持http_referer/app_title附加请求头OpenRouter 的站点署名机制由extra_headers透传。2.4 指数退避重试只对瞬时错误重试网络调用统一套上 src/standard/retry.py 的retry_with_backoff()。它的判断逻辑很克制只重试408/429/502/503/504 状态码、超时、连接错误TRANSIENT_STATUS集合定义不重试401/400/422 这类客户端错误——API Key 错了重试 100 次也没用延迟按base_delay × 2^attempt指数增长封顶 30 秒默认最多 3 次重试LLM 拟人化改写本身的提示词构造在 src/standard/llm_rewriter.py系统提示为专业的文案改写专家精通多语言本地化Step 2 会把 Step 1 的输入/输出作为历史对话注入防止第二轮改写还原第一轮已经打破的句式——这也是带历史的两段改写比单次改写效果更好的关键。三、跨引擎翻译实现两个引擎接力不留指纹 Step 3 与 Step 4 的实现都在 src/standard/translators.py两个引擎、两种完全不同的架构。3.1 Google Translate自动分块处理长文本google_translate()基于deep_translator库。Google 的接口有约 5000 字符的长度限制源码的解法是_split_text()按句子边界切分正则(?[.!?。])在中英文句尾标点处断句逐块翻译后再拼接。这样既绕开长度限制又不会把一个句子拦腰截断保证翻译质量。3.2 Niutrans第二轮翻译的异质引擎niutrans_translate()通过httpx直连 Niutrans API。它的价值不在于翻译能力而在于异质性——与 Google 不同的 NMT 架构和训练数据意味着芬兰语→英文这最后一跳会再次以另一套语法逻辑重组句子。配合 Step 3 的 Google 翻译两跳翻译形成复合结构变化单一引擎的指纹在第一跳被破坏第二跳再叠加一层无法逆向还原的重构。响应解析也做了防御优先取tgt_text字段遇到error_msg则抛出带明确信息的异常而不是返回空字符串静默失败。3.3 参数细节为什么是温度 1.3 和芬兰语参数取值原因temperature1.3高于默认 1.0增加创造性变化超过 1.5 会产生不连贯文本中间语言fi芬兰语黏着语形态强制深度重组词形与从句边界可配置为de/ko等历史轮数1 轮Step 2 看到 Step 1 上下文测试中更多轮数未提升质量 标准流水线之上还有更深的玩法本仓库src/methodologies/下提供了第 3 种方法论——检测引导的反馈回路Detection-guided feedback loop先用困惑度、分类器置信度、节奏多样性等信号定位最像 AI的片段再定向精化原理详见 docs/techniques.md。四、动手跑一遍三步本地运行 pip install -r requirements.txt cp config/config.example.toml config/config.toml # 填入 API key python -m src.standard.pipeline --input draft.txt在 config/config.example.toml 中填入deepseek_api_key和niutrans_api_key即可。加上--verbose可查看每一步引擎、方向与字符数--json则输出包含全部中间步骤的完整追踪——这正是本项目每一步中间产物都公开的承诺。真实样例的完整四步追踪见 examples/showcase/。五、总结值得借鉴的工程细节 ✅humanize-text 用不到千行的核心代码展示了几个可迁移的设计模式兼容层而非 SDK 层识别所有 LLM 服务商共同的 OpenAI 兼容接口用一张默认值表 配置解析函数接入 5 家提供商新增提供商只需加一行字典分层配置解析环境变量 配置文件 内置默认兼顾本地开发与生产部署克制的重试策略只对瞬时错误指数退避重试快速失败比无效重试更省钱异质引擎组合跨引擎翻译不是为了翻译得准而是让结构破坏复合叠加——这是整条流水线最反直觉、也最核心的一招。想深入更多细节可以从 docs/api-reference.md 与 docs/configuration.md 继续读起。【免费下载链接】humanize-textOpen-source text humanization pipeline with every intermediate step published. Two LLM rewrites at temp 1.3, then two hops across different NMT engines. Four documented methodologies you can read, modify, and run locally.项目地址: https://gitcode.com/gh_mirrors/hu/humanize-text创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表