回退httpx版本,优化提示词(有关表格),修复了ai报错过多时卡死的问题

This commit is contained in:
xunbu
2025-07-07 21:43:00 +08:00
parent 1b05bd354a
commit e9e254331d
6 changed files with 19 additions and 14 deletions

View File

@@ -175,7 +175,10 @@ from docutranslate.agents import MDTranslateAgent
translater = FileTranslater() translater = FileTranslater()
translate_agent = MDTranslateAgent(baseurl="<baseurl>", key="<key>", model_id="<model-id>",custom_prompt="Ordering Node全部翻译为排序节点")#这里必须指定baseurl\api-key\model_id translate_agent = MDTranslateAgent(baseurl="<baseurl>",
key="<key>",
model_id="<model-id>",
custom_prompt="Ordering Node全部翻译为排序节点")#这里必须指定baseurl\api-key\model_id
translater.translate_file("<文件路径>", to_lang="中文",translate_agent=translate_agent) translater.translate_file("<文件路径>", to_lang="中文",translate_agent=translate_agent)
``` ```
@@ -292,4 +295,4 @@ translater = FileTranslater(base_url="<baseurl>",
) )
``` ```
> 对于llm功能可以使用ollama或lm studio等方式本地部署。 > 对于本地ai翻译功能可以使用ollama或lm studio等方式本地部署。

View File

@@ -1,4 +1,4 @@
__version__="0.2.41" __version__="0.2.42"

View File

@@ -32,9 +32,7 @@ class TotalErrorCounter:
self.count += 1 self.count += 1
if self.count>MAX_TOTAL_ERROR_COUNT: if self.count>MAX_TOTAL_ERROR_COUNT:
translater_logger.info(f"错误响应过多") translater_logger.info(f"错误响应过多")
raise Exception("错误响应过多")
self.lock.release() self.lock.release()
return self.reach_limit() return self.reach_limit()
def reach_limit(self): def reach_limit(self):
@@ -89,7 +87,7 @@ class Agent:
{"role": "user", "content": prompt} {"role": "user", "content": prompt}
], ],
"temperature": temperature, "temperature": temperature,
"top_p": top_p "top_p": top_p,
} }
return headers, data return headers, data
@@ -121,7 +119,8 @@ class Agent:
raise Exception(f"AI响应格式错误 (async): {repr(e)}") raise Exception(f"AI响应格式错误 (async): {repr(e)}")
# 如果没有正常获取结果则重试 # 如果没有正常获取结果则重试
if retry and retry_count < MAX_RETRY_COUNT: if retry and retry_count < MAX_RETRY_COUNT:
total_error_counter.add() if total_error_counter.add():
return prompt
translater_logger.info(f"正在重试,重试次数{retry_count}") translater_logger.info(f"正在重试,重试次数{retry_count}")
await asyncio.sleep(0.5) await asyncio.sleep(0.5)
return await self.send_async(prompt, system_prompt, retry=True, retry_count=retry_count + 1) return await self.send_async(prompt, system_prompt, retry=True, retry_count=retry_count + 1)
@@ -187,12 +186,13 @@ class Agent:
raise Exception(f"AI响应格式错误 (sync): {repr(e)}") raise Exception(f"AI响应格式错误 (sync): {repr(e)}")
# 如果没有正常获取结果则重试 # 如果没有正常获取结果则重试
if retry and retry_count < MAX_RETRY_COUNT: if retry and retry_count < MAX_RETRY_COUNT:
total_error_counter.add() if total_error_counter.add():
return prompt
translater_logger.info(f"正在重试,重试次数{retry_count}") translater_logger.info(f"正在重试,重试次数{retry_count}")
time.sleep(0.5) time.sleep(0.5)
return self.send(prompt, system_prompt, retry=True, retry_count=retry_count + 1) return self.send(prompt, system_prompt, retry=True, retry_count=retry_count + 1)
else: else:
translater_logger.error(f"达到重试次数上限,返回空行") translater_logger.error(f"达到重试次数上限")
return prompt return prompt
def _send_prompt_count(self, prompt: str, system_prompt: None | str, count: PromptsCounter) -> str: def _send_prompt_count(self, prompt: str, system_prompt: None | str, count: PromptsCounter) -> str:

View File

@@ -57,6 +57,7 @@ class MDTranslateAgent(Agent):
不能改变形如<ph-xxxxxx>的占位符 不能改变形如<ph-xxxxxx>的占位符
code、latex和HTML只翻译说明文字其余保持原文 code、latex和HTML只翻译说明文字其余保持原文
公式无论长短必须表示为能被解析的合法latex公式公式需被$或\\(\\)或$$正确包裹,如不正确则进行修正 公式无论长短必须表示为能被解析的合法latex公式公式需被$或\\(\\)或$$正确包裹,如不正确则进行修正
表格如果是table标签请改为普通表格写法注意表格正确性
去除、修正明显异常的字符、但不能改变原意 去除、修正明显异常的字符、但不能改变原意
引用参考文献时请严格保持原文,不要翻译。参考文献格式示例如下: 引用参考文献时请严格保持原文,不要翻译。参考文献格式示例如下:
[1] Author A, Author B. "Original Title". Journal, 2023. [1] Author A, Author B. "Original Title". Journal, 2023.

View File

@@ -4,7 +4,7 @@ description = "文件翻译工具"
readme = "README.md" readme = "README.md"
requires-python = ">=3.10" requires-python = ">=3.10"
dependencies = [ dependencies = [
"httpx>=0.28.1", "httpx==0.27.2",
"markdown2>=2.5.3", "markdown2>=2.5.3",
"fastapi[standard]>=0.115.12", "fastapi[standard]>=0.115.12",

9
uv.lock generated
View File

@@ -340,7 +340,7 @@ dev = [
requires-dist = [ requires-dist = [
{ name = "docling", marker = "extra == 'docling'", specifier = ">=2.40.0" }, { name = "docling", marker = "extra == 'docling'", specifier = ">=2.40.0" },
{ name = "fastapi", extras = ["standard"], specifier = ">=0.115.12" }, { name = "fastapi", extras = ["standard"], specifier = ">=0.115.12" },
{ name = "httpx", specifier = ">=0.28.1" }, { name = "httpx", specifier = "==0.27.2" },
{ name = "markdown2", specifier = ">=2.5.3" }, { name = "markdown2", specifier = ">=2.5.3" },
{ name = "opencv-python", marker = "extra == 'docling'", specifier = ">=4.11.0.86" }, { name = "opencv-python", marker = "extra == 'docling'", specifier = ">=4.11.0.86" },
] ]
@@ -542,17 +542,18 @@ wheels = [
[[package]] [[package]]
name = "httpx" name = "httpx"
version = "0.28.1" version = "0.27.2"
source = { registry = "https://pypi.org/simple" } source = { registry = "https://pypi.org/simple" }
dependencies = [ dependencies = [
{ name = "anyio" }, { name = "anyio" },
{ name = "certifi" }, { name = "certifi" },
{ name = "httpcore" }, { name = "httpcore" },
{ name = "idna" }, { name = "idna" },
{ name = "sniffio" },
] ]
sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } sdist = { url = "https://files.pythonhosted.org/packages/78/82/08f8c936781f67d9e6b9eeb8a0c8b4e406136ea4c3d1f89a5db71d42e0e6/httpx-0.27.2.tar.gz", hash = "sha256:f7c2be1d2f3c3c3160d441802406b206c2b76f5947b11115e6df10c6c65e66c2", size = 144189 }
wheels = [ wheels = [
{ url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, { url = "https://files.pythonhosted.org/packages/56/95/9377bcb415797e44274b51d46e3249eba641711cf3348050f76ee7b15ffc/httpx-0.27.2-py3-none-any.whl", hash = "sha256:7bb2708e112d8fdd7829cd4243970f0c223274051cb35ee80c03301ee29a3df0", size = 76395 },
] ]
[[package]] [[package]]