更新json工作流readme

This commit is contained in:
xunbu
2025-08-04 11:48:30 +08:00
parent 8f918e596b
commit 0c9acf7da0
5 changed files with 62 additions and 9 deletions

View File

@@ -184,17 +184,65 @@ async def main():
workflow.read_path("path/to/your/notes.txt") workflow.read_path("path/to/your/notes.txt")
await workflow.translate_async() await workflow.translate_async()
# 或者使用同步的方法 # 或者使用同步的方法
workflow.translate() # workflow.translate()
# 5. 保存结果 # 5. 保存结果
workflow.save_as_txt(name="translated_notes.txt") workflow.save_as_txt(name="translated_notes.txt")
workflow.save_as_html(name="translated_notes.html")
print("TXT 文件已保存。") print("TXT 文件已保存。")
# 也可以导出翻译后的纯文本 # 也可以导出翻译后的纯文本
text = workflow.export_to_txt() text = workflow.export_to_txt()
if __name__ == "__main__":
asyncio.run(main())
```
### 示例 3: 翻译一个 json 文件 (使用 `JsonWorkflow`)
这里以异步方式为例。其中JsonTranslatorConfig的json_paths项需要指明要翻译的json路径(满足jsonpath-ng语法规范)仅与json路径匹配的值会被翻译。
```python
import asyncio
from docutranslate.exporter.js.json2html_exporter import Json2HTMLExporterConfig
from docutranslate.translator.ai_translator.json_translator import JsonTranslatorConfig
from docutranslate.workflow.json_workflow import JsonWorkflowConfig, JsonWorkflow
async def main():
# 1. 构建翻译器配置
translator_config = JsonTranslatorConfig(
base_url="https://api.openai.com/v1/",
api_key="YOUR_OPENAI_API_KEY",
model_id="gpt-4o",
to_lang="中文",
json_paths=["$.*","$.name"]#满足jsonpath-ng路径语法,匹配路径的值都会被翻译
)
# 2. 构建主工作流配置
workflow_config = JsonWorkflowConfig(
translator_config=translator_config,
html_exporter_config=Json2HTMLExporterConfig(cdn=True)
)
# 3. 实例化工作流
workflow = JsonWorkflow(config=workflow_config)
# 4. 读取文件并执行翻译
workflow.read_path("path/to/your/notes.txt")
await workflow.translate_async()
# 或者使用同步的方法
# workflow.translate()
# 5. 保存结果
workflow.save_as_json(name="translated_notes.json")
print("json文件已保存。")
# 也可以导出翻译后的json文本
text = workflow.export_to_json()
if __name__ == "__main__": if __name__ == "__main__":
asyncio.run(main()) asyncio.run(main())
``` ```

View File

@@ -162,6 +162,7 @@ class Agent:
) -> list[str]: ) -> list[str]:
max_concurrent = self.max_concurrent if max_concurrent is None else max_concurrent max_concurrent = self.max_concurrent if max_concurrent is None else max_concurrent
total = len(prompts) total = len(prompts)
self.logger.info(f"收到{total}个片段,并发请求数:{max_concurrent}")
count = 0 count = 0
semaphore = asyncio.Semaphore(max_concurrent) semaphore = asyncio.Semaphore(max_concurrent)
tasks = [] tasks = []
@@ -231,6 +232,8 @@ class Agent:
prompts: list[str], prompts: list[str],
system_prompt: str | None = None, system_prompt: str | None = None,
) -> list[str]: ) -> list[str]:
self.logger.info(f"收到{len(prompts)}个片段,并发请求数:{self.max_concurrent}")
system_prompts = [system_prompt] * len(prompts) system_prompts = [system_prompt] * len(prompts)
counts = [PromptsCounter(len(prompts), self.logger)] * len(prompts) counts = [PromptsCounter(len(prompts), self.logger)] * len(prompts)
output_list = [] output_list = []

View File

@@ -16,19 +16,21 @@ class JsonTranslateAgent(Agent):
# 角色 # 角色
你是一个专业的机器翻译引擎 你是一个专业的机器翻译引擎
# 工作 # 工作
翻译输入的json的值保持键不改变 你接收一个待翻译片段的序列以json格式表示。其中键是待片段的编号值是待翻译片段。
你需要将待翻译片段翻译成目标语言。
目标语言:{config.to_lang} 目标语言:{config.to_lang}
# 要求 # 要求
翻译要求专业准确 翻译要求专业准确
不输出任何解释和注释 不输出任何解释和注释
如果已经是目标语言,则保持原样 翻译后的片段应该与源格式尽量相同
如果待翻译片段已经是目标语言,则保持原样
# 输出 # 输出
翻译后的json纯文本 翻译后的片段序列以json格式表示。其中键是片段编号值是翻译后的片段
# 示例 # 示例
## 输入 ## 输入
{r'{"1":"hello","2":"apple","3":true,"4":"false"}'} {r'{"0":"hello","1":"apple","2":true,"3":"false"}'}
## 输出 ## 输出
{r'{"1":"你好","2":"苹果","3":true,"4":"错误"}'} {r'{"0":"你好","1":"苹果","2":true,"3":"错误"}'}
""" """
if config.custom_prompt: if config.custom_prompt:
self.system_prompt += "\n# 重要规则或背景【非常重要】\n" + config.custom_prompt + '\n' self.system_prompt += "\n# 重要规则或背景【非常重要】\n" + config.custom_prompt + '\n'

File diff suppressed because one or more lines are too long

View File

@@ -2,7 +2,7 @@ import json
from dataclasses import dataclass from dataclasses import dataclass
from typing import Self, Any from typing import Self, Any
from jsonpath_ng import parse from jsonpath_ng.ext import parse
from docutranslate.agents.segments_agent import JsonTranslateAgentConfig, JsonTranslateAgent from docutranslate.agents.segments_agent import JsonTranslateAgentConfig, JsonTranslateAgent
from docutranslate.ir.document import Document from docutranslate.ir.document import Document