130 lines
4.4 KiB
Python
130 lines
4.4 KiB
Python
|
|
"""
|
|||
|
|
词典API调用工具
|
|||
|
|
Dictionary API Client
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
from typing import Dict, Any, Optional
|
|||
|
|
import requests
|
|||
|
|
import json
|
|||
|
|
from dataclasses import dataclass
|
|||
|
|
|
|||
|
|
|
|||
|
|
@dataclass
|
|||
|
|
class DictionaryAPIClient:
|
|||
|
|
"""
|
|||
|
|
词典API客户端 - 可扩展支持多种API
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
# 可以配置多个API
|
|||
|
|
youdao_api_key: Optional[str] = None
|
|||
|
|
youdao_api_secret: Optional[str] = None
|
|||
|
|
|
|||
|
|
def query_word_youdao(self, word: str) -> Optional[Dict[str, Any]]:
|
|||
|
|
"""
|
|||
|
|
调用有道词典API查询单词
|
|||
|
|
|
|||
|
|
注意:需要配置有道API密钥才能使用
|
|||
|
|
文档:https://ai.youdao.com/doc.s#guide
|
|||
|
|
"""
|
|||
|
|
if not self.youdao_api_key or not self.youdao_api_secret:
|
|||
|
|
return None
|
|||
|
|
|
|||
|
|
try:
|
|||
|
|
# TODO: 实现真实的有道API调用
|
|||
|
|
# 这里是示例结构
|
|||
|
|
return None
|
|||
|
|
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f"有道API调用失败:{e}")
|
|||
|
|
return None
|
|||
|
|
|
|||
|
|
def translate_baidu(self, text: str, from_lang: str = "auto", to_lang: str = "zh") -> Optional[Dict[str, Any]]:
|
|||
|
|
"""
|
|||
|
|
调用百度翻译API
|
|||
|
|
|
|||
|
|
注意:需要配置百度API密钥才能使用
|
|||
|
|
文档:https://fanyi-api.baidu.com/doc/21
|
|||
|
|
"""
|
|||
|
|
# TODO: 实现真实的百度翻译API调用
|
|||
|
|
return None
|
|||
|
|
|
|||
|
|
def query_word_mock(self, word: str) -> Dict[str, Any]:
|
|||
|
|
"""
|
|||
|
|
模拟词典API - 目前用于演示
|
|||
|
|
"""
|
|||
|
|
mock_db = {
|
|||
|
|
"serendipity": {
|
|||
|
|
"phonetic": "/ˌserənˈdipədē/",
|
|||
|
|
"part_of_speech": "n.",
|
|||
|
|
"definitions": ["意外发现珍奇事物的能力", "机缘凑巧"],
|
|||
|
|
"examples": ["Finding that old photo was pure serendipity."]
|
|||
|
|
},
|
|||
|
|
"ephemeral": {
|
|||
|
|
"phonetic": "/əˈfem(ə)rəl/",
|
|||
|
|
"part_of_speech": "adj.",
|
|||
|
|
"definitions": ["短暂的,瞬息的"],
|
|||
|
|
"examples": ["Fame in the digital age is often ephemeral."]
|
|||
|
|
},
|
|||
|
|
"ubiquitous": {
|
|||
|
|
"phonetic": "/yo͞oˈbikwədəs/",
|
|||
|
|
"part_of_speech": "adj.",
|
|||
|
|
"definitions": ["无处不在的", "普遍存在的"],
|
|||
|
|
"examples": ["Smartphones have become ubiquitous in modern life."]
|
|||
|
|
},
|
|||
|
|
"eloquent": {
|
|||
|
|
"phonetic": "/ˈeləkwənt/",
|
|||
|
|
"part_of_speech": "adj.",
|
|||
|
|
"definitions": ["雄辩的,有说服力的"],
|
|||
|
|
"examples": ["She gave an eloquent speech at the conference."]
|
|||
|
|
},
|
|||
|
|
"resilient": {
|
|||
|
|
"phonetic": "/rəˈzilyənt/",
|
|||
|
|
"part_of_speech": "adj.",
|
|||
|
|
"definitions": ["有复原力的,能适应的"],
|
|||
|
|
"examples": ["The community has proven to be resilient in the face of challenges."]
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if word.lower() in mock_db:
|
|||
|
|
return mock_db[word.lower()]
|
|||
|
|
else:
|
|||
|
|
return {
|
|||
|
|
"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]:
|
|||
|
|
"""
|
|||
|
|
模拟翻译API - 目前用于演示
|
|||
|
|
"""
|
|||
|
|
translations = {
|
|||
|
|
"你好": "Hello",
|
|||
|
|
"hello": "你好",
|
|||
|
|
"人工智能": "Artificial Intelligence",
|
|||
|
|
"artificial intelligence": "人工智能",
|
|||
|
|
"ai": "人工智能",
|
|||
|
|
"大模型": "Large Language Model",
|
|||
|
|
"自然语言处理": "Natural Language Processing"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return {
|
|||
|
|
"translated_text": translations.get(text.lower(), f"【翻译结果】{text}"),
|
|||
|
|
"confidence": 0.95
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
def extract_terms_mock(self, text: str) -> list:
|
|||
|
|
"""
|
|||
|
|
模拟术语提取API
|
|||
|
|
"""
|
|||
|
|
return [
|
|||
|
|
{"term": "AI", "type": "技术术语", "definition": "人工智能", "confidence": 0.95},
|
|||
|
|
{"term": "LLM", "type": "技术术语", "definition": "大语言模型", "confidence": 0.92},
|
|||
|
|
{"term": "NLP", "type": "技术术语", "definition": "自然语言处理", "confidence": 0.88}
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
|
|||
|
|
# 单例实例
|
|||
|
|
dictionary_api = DictionaryAPIClient()
|