提供强制json输出的选项

This commit is contained in:
xunbu
2025-11-09 22:28:38 +08:00
parent b68fbf5b7f
commit 9af1f7198d
12 changed files with 101 additions and 78 deletions

View File

@@ -376,6 +376,9 @@ class BaseWorkflowParams(BaseModel):
None, None,
description="用于术语表生成的Agent的配置。如果 `glossary_generate_enable` 为 `True`,此项必填。", description="用于术语表生成的Agent的配置。如果 `glossary_generate_enable` 为 `True`,此项必填。",
) )
force_json: bool = Field(
default=False, description="应输出json格式时强制ai输出json"
)
@model_validator(mode="before") @model_validator(mode="before")
@classmethod @classmethod
@@ -907,6 +910,7 @@ async def _perform_translation(
"timeout", "timeout",
"retry", "retry",
"system_proxy_enable", "system_proxy_enable",
"force_json",
}, },
exclude_none=True, exclude_none=True,
) )
@@ -969,6 +973,7 @@ async def _perform_translation(
"timeout", "timeout",
"retry", "retry",
"system_proxy_enable", "system_proxy_enable",
"force_json",
}, },
exclude_none=True, exclude_none=True,
) )
@@ -1005,6 +1010,7 @@ async def _perform_translation(
"timeout", "timeout",
"retry", "retry",
"system_proxy_enable", "system_proxy_enable",
"force_json",
}, },
exclude_none=True, exclude_none=True,
) )
@@ -1043,6 +1049,7 @@ async def _perform_translation(
"timeout", "timeout",
"retry", "retry",
"system_proxy_enable", "system_proxy_enable",
"force_json",
}, },
exclude_none=True, exclude_none=True,
) )
@@ -1080,6 +1087,7 @@ async def _perform_translation(
"timeout", "timeout",
"retry", "retry",
"system_proxy_enable", "system_proxy_enable",
"force_json",
}, },
exclude_none=True, exclude_none=True,
) )
@@ -1117,6 +1125,7 @@ async def _perform_translation(
"timeout", "timeout",
"retry", "retry",
"system_proxy_enable", "system_proxy_enable",
"force_json",
}, },
exclude_none=True, exclude_none=True,
) )
@@ -1154,6 +1163,7 @@ async def _perform_translation(
"timeout", "timeout",
"retry", "retry",
"system_proxy_enable", "system_proxy_enable",
"force_json",
}, },
exclude_none=True, exclude_none=True,
) )
@@ -1192,6 +1202,7 @@ async def _perform_translation(
"timeout", "timeout",
"retry", "retry",
"system_proxy_enable", "system_proxy_enable",
"force_json",
}, },
exclude_none=True, exclude_none=True,
) )
@@ -1228,6 +1239,7 @@ async def _perform_translation(
"timeout", "timeout",
"retry", "retry",
"system_proxy_enable", "system_proxy_enable",
"force_json",
}, },
exclude_none=True, exclude_none=True,
) )

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -39,7 +39,8 @@ class AssTranslator(AiTranslator):
logger=self.logger, logger=self.logger,
glossary_dict=config.glossary_dict, glossary_dict=config.glossary_dict,
retry=config.retry, retry=config.retry,
system_proxy_enable=config.system_proxy_enable system_proxy_enable=config.system_proxy_enable,
json_format=config.force_json
) )
self.translate_agent = SegmentsTranslateAgent(agent_config) self.translate_agent = SegmentsTranslateAgent(agent_config)
self.insert_mode = config.insert_mode self.insert_mode = config.insert_mode

View File

@@ -26,7 +26,7 @@ class AiTranslatorConfig(TranslatorConfig, AgentConfig):
glossary_generate_enable: bool = False glossary_generate_enable: bool = False
glossary_agent_config: GlossaryAgentConfig | None = None glossary_agent_config: GlossaryAgentConfig | None = None
skip_translate: bool = False # 当skip_translate为False时base_url、model_id为必填项 skip_translate: bool = False # 当skip_translate为False时base_url、model_id为必填项
force_json:bool=False # 应输出json格式时强制ai输出json
T = TypeVar("T", bound=Document) T = TypeVar("T", bound=Document)

View File

@@ -129,7 +129,7 @@ class DocxTranslator(AiTranslator):
api_key=config.api_key, model_id=config.model_id, temperature=config.temperature, api_key=config.api_key, model_id=config.model_id, temperature=config.temperature,
thinking=config.thinking, concurrent=config.concurrent, timeout=config.timeout, thinking=config.thinking, concurrent=config.concurrent, timeout=config.timeout,
logger=self.logger, glossary_dict=config.glossary_dict, retry=config.retry, logger=self.logger, glossary_dict=config.glossary_dict, retry=config.retry,
system_proxy_enable=config.system_proxy_enable system_proxy_enable=config.system_proxy_enable,json_format=config.force_json
) )
self.translate_agent = SegmentsTranslateAgent(agent_config) self.translate_agent = SegmentsTranslateAgent(agent_config)
self.insert_mode = config.insert_mode self.insert_mode = config.insert_mode

View File

@@ -50,7 +50,8 @@ class EpubTranslator(AiTranslator):
logger=self.logger, logger=self.logger,
glossary_dict=config.glossary_dict, glossary_dict=config.glossary_dict,
retry=config.retry, retry=config.retry,
system_proxy_enable=config.system_proxy_enable system_proxy_enable=config.system_proxy_enable,
json_format=config.force_json
) )
self.translate_agent = SegmentsTranslateAgent(agent_config) self.translate_agent = SegmentsTranslateAgent(agent_config)
self.insert_mode = config.insert_mode self.insert_mode = config.insert_mode

View File

@@ -68,7 +68,8 @@ class HtmlTranslator(AiTranslator):
logger=self.logger, logger=self.logger,
glossary_dict=config.glossary_dict, glossary_dict=config.glossary_dict,
retry=config.retry, retry=config.retry,
system_proxy_enable=config.system_proxy_enable system_proxy_enable=config.system_proxy_enable,
json_format=config.force_json
) )
self.translate_agent = SegmentsTranslateAgent(agent_config) self.translate_agent = SegmentsTranslateAgent(agent_config)
self.insert_mode = config.insert_mode self.insert_mode = config.insert_mode

View File

@@ -36,7 +36,8 @@ class JsonTranslator(AiTranslator):
logger=self.logger, logger=self.logger,
glossary_dict=config.glossary_dict, glossary_dict=config.glossary_dict,
retry=config.retry, retry=config.retry,
system_proxy_enable=config.system_proxy_enable system_proxy_enable=config.system_proxy_enable,
json_format=config.force_json
) )
self.translate_agent = SegmentsTranslateAgent(agent_config) self.translate_agent = SegmentsTranslateAgent(agent_config)
self.json_paths = config.json_paths self.json_paths = config.json_paths

View File

@@ -41,7 +41,8 @@ class SrtTranslator(AiTranslator):
logger=self.logger, logger=self.logger,
glossary_dict=config.glossary_dict, glossary_dict=config.glossary_dict,
retry=config.retry, retry=config.retry,
system_proxy_enable=config.system_proxy_enable system_proxy_enable=config.system_proxy_enable,
json_format=config.force_json
) )
self.translate_agent = SegmentsTranslateAgent(agent_config) self.translate_agent = SegmentsTranslateAgent(agent_config)
self.insert_mode = config.insert_mode self.insert_mode = config.insert_mode

View File

@@ -66,7 +66,8 @@ class TXTTranslator(AiTranslator):
logger=self.logger, logger=self.logger,
glossary_dict=config.glossary_dict, glossary_dict=config.glossary_dict,
retry=config.retry, retry=config.retry,
system_proxy_enable=config.system_proxy_enable system_proxy_enable=config.system_proxy_enable,
json_format=config.force_json
) )
self.translate_agent = SegmentsTranslateAgent(agent_config) self.translate_agent = SegmentsTranslateAgent(agent_config)
self.insert_mode = config.insert_mode self.insert_mode = config.insert_mode

View File

@@ -45,7 +45,8 @@ class XlsxTranslator(AiTranslator):
logger=self.logger, logger=self.logger,
glossary_dict=config.glossary_dict, glossary_dict=config.glossary_dict,
retry=config.retry, retry=config.retry,
system_proxy_enable=config.system_proxy_enable system_proxy_enable=config.system_proxy_enable,
json_format=config.force_json
) )
self.translate_agent = SegmentsTranslateAgent(agent_config) self.translate_agent = SegmentsTranslateAgent(agent_config)
self.insert_mode = config.insert_mode self.insert_mode = config.insert_mode