82 lines
2.7 KiB
Python
82 lines
2.7 KiB
Python
"""
|
||
词典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()
|