更新json工作流readme
This commit is contained in:
52
README.md
52
README.md
@@ -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())
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -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 = []
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user