多语言处理实施计划

快速实施步骤

第一步:添加语言检测到引擎入口(5分钟)

src/core/engine.pyprocess() 方法开始处添加:

async def process(
    self,
    user_input: str,
    device_id: str,
    user_id: Optional[str] = None
) -> MisesAnalyzeResult:
    """处理用户输入"""
    
    # 🆕 语言检测(新增)
    try:
        from shared.src.chat.translation import get_translation_service
        translator = get_translation_service()
        detected_lang = await translator.detect_language(user_input)
        logger.info(f"🌐 Detected language: {detected_lang} for input: {user_input[:50]}")
    except Exception as e:
        logger.debug(f"Language detection skipped: {e}")
        detected_lang = None
    
    # 继续原有流程...

第二步:添加用户语言偏好支持(10分钟)

2.1 修改 API 请求模型

# src/mcp/server.py

class AnalyzeRequest(BaseModel):
    user_input: str
    device_id: str
    user_id: Optional[str] = None
    preferred_language: Optional[str] = None  # 🆕 新增
    # ... 其他字段

2.2 在用户画像中存储语言偏好

# src/schemas/models.py

class UserProfile(BaseModel):
    # ... 现有字段
    preferred_language: str = "zh-CN"  # 🆕 新增
    detected_languages: List[str] = []  # 🆕 历史语言

第三步:实现翻译回复(15分钟)

在引擎返回结果前,如果用户偏好语言与回复语言不同,则翻译:

# src/core/engine.py

async def process(...):
    # ... 原有处理逻辑
    result = await self._process_stage(...)
    
    # 🆕 翻译回复(如果需要)
    if user_language and user_language != "zh-CN":
        try:
            translator = get_translation_service()
            translated = await translator.translate(
                result.answer,
                target_language=user_language,
                source_language="zh-CN"
            )
            if translated:
                result.answer = translated["translated_text"]
                logger.info(f"🌐 Translated answer to {user_language}")
        except Exception as e:
            logger.warning(f"Translation failed: {e}")
    
    return result

第四步:更新 API 端点(10分钟)

# src/mcp/server.py

@mcp_router.post("/analyze")
async def rest_analyze(request: AnalyzeRequest):
    """智能分析"""
    
    # 🆕 获取用户语言偏好
    user_language = request.preferred_language
    if not user_language and request.user_id:
        # 从用户画像获取
        profile = await get_user_profile(request.user_id)
        user_language = profile.preferred_language if profile else None
    
    # 调用引擎(传入语言偏好)
    result = await engine.process(
        user_input=request.user_input,
        device_id=request.device_id,
        user_id=request.user_id,
        user_language=user_language  # 🆕 传入语言偏好
    )
    
    return result.model_dump()

完整实施清单

  • 第一步:添加语言检测
  • 第二步:添加用户语言偏好支持
  • 第三步:实现翻译回复
  • 第四步:更新 API 端点
  • 测试:多语言输入测试
  • 测试:翻译质量测试
  • 文档:更新 API 文档

预期效果

实施后,系统将能够:

  1. ✅ 自动检测用户输入语言
  2. ✅ 支持用户指定偏好语言
  3. ✅ 自动翻译回复到用户偏好语言
  4. ✅ 记录用户语言使用模式

注意事项

  1. 性能考虑:语言检测和翻译会增加延迟,考虑异步处理或缓存
  2. 翻译质量:使用高质量的翻译服务(如 DeepL API)
  3. 成本控制:翻译 API 可能有调用费用,需要监控
  4. 用户体验:允许用户选择是否启用自动翻译