Files
ailine/backend/app/subgraphs/dictionary/api_client.py
root 3ae9daa01a
Some checks failed
构建并部署 AI Agent 服务 / deploy (push) Failing after 6m44s
导入方式修改
2026-05-05 23:17:00 +08:00

82 lines
2.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
词典API调用工具使用MCP统一接口
"""
from typing import Dict, Any, Optional
from dataclasses import dataclass
from ...mcp.mcp_manager import mcp_manager
from ...mcp.adapters import DictionaryAdapter
@dataclass
class DictionaryAPIClient:
"""
词典API客户端 - 使用MCP统一接口
保持向后兼容内部使用MCP适配器
"""
# 保留配置字段用于向后兼容
youdao_api_key: Optional[str] = None
youdao_api_secret: Optional[str] = None
word_repository: Optional[Any] = None
def __post_init__(self):
"""初始化后设置(延迟初始化标志)"""
self._mcp_initialized = False # 延迟初始化标志
async def _init_mcp(self):
"""初始化MCP系统延迟初始化"""
if self._mcp_initialized:
return # 已初始化,跳过
if not mcp_manager.get_adapter("dictionary"):
mcp_manager.register_adapter(
DictionaryAdapter(word_repo=self.word_repository)
)
await mcp_manager.initialize()
self._mcp_initialized = True
async def query_word(
self,
user_id: str = "default",
word: str = "",
use_cache: bool = True
) -> Dict[str, Any]:
"""查询单词(统一入口)"""
await self._init_mcp()
result = await mcp_manager.execute(
"dictionary", "query_word",
user_id=user_id, word=word, use_cache=use_cache
)
if result.success:
return result.data
return self.query_word_mock(word)
def query_word_mock(self, word: str) -> Dict[str, Any]:
"""模拟查询(保留用于向后兼容)"""
return {
"word": word,
"phonetic": "",
"part_of_speech": "n.",
"definitions": [f"{word} 的释义1", f"{word} 的释义2"],
"examples": [f"This is an example sentence with '{word}'."]
}
def translate_mock(self, text: str, from_lang: str = "auto", to_lang: str = "zh") -> Dict[str, Any]:
"""模拟翻译(保留用于向后兼容)"""
return {
"translated_text": f"【翻译】{text}",
"confidence": 0.95
}
def extract_terms_mock(self, text: str) -> list:
"""模拟术语提取(保留用于向后兼容)"""
return [
{"term": "AI", "type": "技术术语", "definition": "人工智能", "confidence": 0.95},
{"term": "大模型", "type": "技术术语", "definition": "大语言模型", "confidence": 0.92}
]
# 全局单例(保持向后兼容)
dictionary_api = DictionaryAPIClient()