MiniMax模型集成Raven智能体框架:中文场景实战指南 最近在尝试将大模型能力集成到智能体框架中时发现MiniMax模型与Raven智能体框架的组合在中文场景下表现尤为出色。不少开发者在集成过程中遇到了API调用、权限配置和框架适配等问题本文将分享一套完整的MiniMax模型集成Raven智能体框架的实战方案。1. MiniMax模型与Raven框架核心概念1.1 MiniMax模型技术特点MiniMax是一家专注于大模型技术研发的AI公司其模型在中文理解和生成任务上表现优异。MiniMax模型支持多种模态的AI能力包括文本生成、语音合成、图像理解等。与传统的开源模型相比MiniMax模型在中文语境下的语义理解更加准确生成内容更符合中文表达习惯。在实际应用中MiniMax模型提供了完善的API接口体系开发者可以通过简单的HTTP请求调用模型能力。其API设计遵循RESTful规范支持JSON格式的数据交互便于快速集成到现有系统中。1.2 Raven智能体框架架构解析Raven是一个开源的智能体框架专注于构建可扩展的AI应用系统。框架采用模块化设计将智能体的核心能力拆分为多个功能组件包括对话管理、任务规划、工具调用等。Raven框架支持多种大模型后端通过统一的接口规范实现模型的无缝切换。框架的核心优势在于其灵活的可扩展性。开发者可以基于Raven快速构建自定义的智能体应用通过配置化的方式定义智能体的行为逻辑。同时Raven提供了完善的生命周期管理机制支持智能体的状态持久化和会话管理。1.3 集成方案的价值与适用场景将MiniMax模型集成到Raven框架中可以充分发挥两者在各自领域的优势。MiniMax模型提供强大的中文语言理解能力而Raven框架则负责智能体的逻辑控制和任务调度。这种组合特别适合需要处理复杂中文场景的AI应用。典型的应用场景包括智能客服系统、内容创作助手、数据分析工具等。在这些场景中MiniMax模型负责理解用户意图和生成自然响应Raven框架则负责管理对话流程和调用外部工具。这种分工协作的模式既保证了响应质量又提高了系统的可维护性。2. 环境准备与依赖配置2.1 系统环境要求在开始集成之前需要确保开发环境满足基本要求。推荐使用Python 3.8及以上版本操作系统可以是Windows、Linux或macOS。需要确保网络连接正常能够访问MiniMax的API服务。建议使用虚拟环境来管理项目依赖避免与系统环境产生冲突。可以使用conda或venv创建独立的Python环境# 使用conda创建环境 conda create -n minimax-raven python3.8 conda activate minimax-raven # 或使用venv创建环境 python -m venv minimax-raven source minimax-raven/bin/activate # Linux/macOS minimax-raven\Scripts\activate # Windows2.2 核心依赖安装项目需要安装Raven框架的核心包以及MiniMax的Python SDK。此外还需要一些辅助工具库来处理网络请求和数据序列化。# 安装Raven框架 pip install raven-agent-framework # 安装MiniMax官方SDK pip install minimax-api-client # 安装辅助依赖 pip install requests httpx pydantic loguru如果遇到版本冲突问题可以尝试指定依赖版本pip install raven-agent-framework1.2.0 pip install minimax-api-client0.3.12.3 MiniMax API密钥配置使用MiniMax模型需要先获取API密钥。访问MiniMax官方网站注册账号并申请API访问权限。获得密钥后需要妥善保管并在代码中安全地使用。建议通过环境变量管理敏感信息避免将密钥硬编码在代码中# 设置环境变量Linux/macOS export MINIMAX_API_KEYyour_api_key_here export MINIMAX_GROUP_IDyour_group_id_here # Windows PowerShell $env:MINIMAX_API_KEYyour_api_key_here $env:MINIMAX_GROUP_IDyour_group_id_here3. Raven框架基础配置3.1 框架初始化配置Raven框架需要通过配置文件或代码方式进行初始化。推荐使用YAML格式的配置文件便于管理不同环境的配置参数。创建config.yaml配置文件# Raven框架基础配置 raven: agent: name: minimax-agent version: 1.0.0 description: 基于MiniMax模型的智能体 # 对话管理配置 dialogue: max_turns: 10 timeout: 30 enable_memory: true # 日志配置 logging: level: INFO format: %(asctime)s - %(name)s - %(levelname)s - %(message)s在Python代码中加载配置并初始化框架import yaml from raven import RavenFramework def load_config(): with open(config.yaml, r, encodingutf-8) as f: return yaml.safe_load(f) def initialize_raven(): config load_config() framework RavenFramework(config) return framework # 初始化框架实例 raven_framework initialize_raven()3.2 智能体基础类定义在Raven框架中需要创建自定义的智能体类来封装MiniMax模型的能力。基础智能体类需要继承Raven提供的基类并实现必要的方法。from raven.agents import BaseAgent from raven.messages import AgentMessage from typing import Dict, Any, Optional class MiniMaxAgent(BaseAgent): def __init__(self, agent_config: Dict[str, Any]): super().__init__(agent_config) self.minimax_client None self.setup_minimax_client() def setup_minimax_client(self): 初始化MiniMax客户端 import os from minimax_api import MiniMaxClient api_key os.getenv(MINIMAX_API_KEY) group_id os.getenv(MINIMAX_GROUP_ID) if not api_key or not group_id: raise ValueError(MiniMax API密钥或Group ID未配置) self.minimax_client MiniMaxClient(api_key, group_id) async def process_message(self, message: AgentMessage) - AgentMessage: 处理传入消息的核心方法 try: # 调用MiniMax模型生成响应 response await self.generate_response(message.content) # 构建返回消息 return AgentMessage( contentresponse, metadata{ model: minimax, timestamp: message.timestamp } ) except Exception as e: self.logger.error(f处理消息时发生错误: {e}) return AgentMessage( content抱歉我遇到了一些问题请稍后再试。, metadata{error: str(e)} )3.3 消息处理机制配置Raven框架使用消息队列来管理智能体之间的通信。需要配置消息路由规则和处理器映射确保消息能够正确传递到MiniMax智能体。from raven.messaging import MessageRouter from raven.handlers import MessageHandler class MiniMaxMessageHandler(MessageHandler): def __init__(self, agent: MiniMaxAgent): self.agent agent async def handle(self, message: AgentMessage) - AgentMessage: 处理消息并返回响应 return await self.agent.process_message(message) def setup_message_routing(framework: RavenFramework, agent: MiniMaxAgent): 配置消息路由 router MessageRouter() handler MiniMaxMessageHandler(agent) # 注册消息处理器 router.register_handler(minimax, handler) # 设置默认路由规则 router.add_route(user.*, minimax) framework.set_message_router(router) return router4. MiniMax模型集成实现4.1 API客户端封装为了更好与Raven框架集成需要对MiniMax的官方SDK进行二次封装提供更符合框架使用习惯的接口。import httpx from typing import List, Dict, Any import json import asyncio class MiniMaxService: def __init__(self, api_key: str, group_id: str): self.api_key api_key self.group_id group_id self.base_url https://api.minimax.chat/v1 self.headers { Authorization: fBearer {api_key}, Content-Type: application/json } self.timeout 30 async def chat_completion(self, messages: List[Dict], model: str minimax-01, temperature: float 0.7, max_tokens: int 2048) - Dict[str, Any]: 调用MiniMax聊天补全API url f{self.base_url}/chat/completion payload { model: model, messages: messages, temperature: temperature, max_tokens: max_tokens, group_id: self.group_id } async with httpx.AsyncClient(timeoutself.timeout) as client: try: response await client.post(url, jsonpayload, headersself.headers) response.raise_for_status() return response.json() except httpx.HTTPError as e: raise Exception(fAPI请求失败: {e}) except json.JSONDecodeError as e: raise Exception(f响应解析失败: {e}) async def generate_response(self, user_input: str, context: List[Dict] None) - str: 生成对话响应 messages [] # 添加上下文消息 if context: messages.extend(context) # 添加当前用户输入 messages.append({role: user, content: user_input}) try: result await self.chat_completion(messages) return result[choices][0][message][content] except KeyError as e: raise Exception(fAPI响应格式异常: {e}) except IndexError as e: raise Exception(f未生成有效响应: {e})4.2 模型参数优化配置针对不同的应用场景需要调整MiniMax模型的参数以获得最佳效果。以下是一些常用的参数配置方案from dataclasses import dataclass from enum import Enum class ModelType(Enum): STANDARD minimax-01 PRO minimax-pro LITE minimax-lite dataclass class ModelConfig: model_type: ModelType temperature: float max_tokens: int top_p: float presence_penalty: float classmethod def get_chat_config(cls) - ModelConfig: 对话场景配置 return cls( model_typeModelType.STANDARD, temperature0.7, max_tokens1024, top_p0.9, presence_penalty0.1 ) classmethod def get_creative_config(cls) - ModelConfig: 创意生成场景配置 return cls( model_typeModelType.PRO, temperature0.9, max_tokens2048, top_p0.95, presence_penalty0.2 ) classmethod def get_technical_config(cls) - ModelConfig: 技术问答场景配置 return cls( model_typeModelType.STANDARD, temperature0.3, max_tokens512, top_p0.8, presence_penalty0.0 ) class OptimizedMiniMaxService(MiniMaxService): def __init__(self, api_key: str, group_id: str): super().__init__(api_key, group_id) self.model_configs {} self.setup_default_configs() def setup_default_configs(self): 设置默认配置 self.model_configs[chat] ModelConfig.get_chat_config() self.model_configs[creative] ModelConfig.get_creative_config() self.model_configs[technical] ModelConfig.get_technical_config() async def optimized_chat(self, user_input: str, context: List[Dict] None, scenario: str chat) - str: 根据场景优化的聊天方法 config self.model_configs.get(scenario, self.model_configs[chat]) messages [] if context: messages.extend(context) messages.append({role: user, content: user_input}) payload { model: config.model_type.value, messages: messages, temperature: config.temperature, max_tokens: config.max_tokens, top_p: config.top_p, presence_penalty: config.presence_penalty, group_id: self.group_id } # 调用API的逻辑与父类相同 async with httpx.AsyncClient(timeoutself.timeout) as client: response await client.post( f{self.base_url}/chat/completion, jsonpayload, headersself.headers ) result response.json() return result[choices][0][message][content]4.3 错误处理与重试机制在实际应用中网络波动和API限制是常见问题。需要实现完善的错误处理和重试机制来保证系统稳定性。import time from typing import Callable, Any import asyncio from loguru import logger class RetryConfig: def __init__(self, max_retries: int 3, base_delay: float 1.0, max_delay: float 10.0): self.max_retries max_retries self.base_delay base_delay self.max_delay max_delay class RobustMiniMaxService(MiniMaxService): def __init__(self, api_key: str, group_id: str, retry_config: RetryConfig None): super().__init__(api_key, group_id) self.retry_config retry_config or RetryConfig() async def execute_with_retry(self, func: Callable, *args, **kwargs) - Any: 带重试机制的API执行方法 last_exception None for attempt in range(self.retry_config.max_retries 1): try: return await func(*args, **kwargs) except httpx.HTTPError as e: last_exception e status_code e.response.status_code if e.response else None if status_code 429: # 频率限制 wait_time self.calculate_backoff(attempt) logger.warning(f频率限制等待 {wait_time}秒后重试) await asyncio.sleep(wait_time) elif status_code 500: # 服务器错误 wait_time self.calculate_backoff(attempt) logger.warning(f服务器错误等待 {wait_time}秒后重试) await asyncio.sleep(wait_time) else: # 客户端错误不重试 raise e except Exception as e: last_exception e if attempt self.retry_config.max_retries: break wait_time self.calculate_backoff(attempt) logger.warning(f请求失败等待 {wait_time}秒后重试: {e}) await asyncio.sleep(wait_time) raise last_exception or Exception(重试次数用尽) def calculate_backoff(self, attempt: int) - float: 计算指数退避等待时间 delay min(self.retry_config.base_delay * (2 ** attempt), self.retry_config.max_delay) return delay (random.random() * 0.1) # 添加随机抖动 async def robust_chat_completion(self, messages: List[Dict], **kwargs) - Dict[str, Any]: 带重试的聊天补全 async def api_call(): return await self.chat_completion(messages, **kwargs) return await self.execute_with_retry(api_call)5. 完整集成示例与测试5.1 项目结构规划一个完整的集成项目应该包含清晰的目录结构和模块划分minimax-raven-integration/ ├── src/ │ ├── agents/ │ │ ├── __init__.py │ │ ├── minimax_agent.py │ │ └── agent_factory.py │ ├── services/ │ │ ├── __init__.py │ │ ├── minimax_service.py │ │ └── retry_strategy.py │ ├── config/ │ │ ├── __init__.py │ │ └── settings.py │ └── utils/ │ ├── __init__.py │ └── logger.py ├── tests/ │ ├── __init__.py │ ├── test_minimax_agent.py │ └── test_integration.py ├── config.yaml ├── requirements.txt └── main.py5.2 主程序入口实现创建主程序文件负责初始化所有组件并启动服务#!/usr/bin/env python3 MiniMax-Raven集成主程序 import asyncio import os import signal import sys from pathlib import Path # 添加src目录到Python路径 sys.path.append(str(Path(__file__).parent / src)) from src.agents.minimax_agent import MiniMaxAgent from src.config.settings import load_config from raven import RavenFramework class Application: def __init__(self): self.framework None self.agent None self.running False async def initialize(self): 初始化应用 try: # 加载配置 config load_config() # 初始化Raven框架 self.framework RavenFramework(config[raven]) # 创建MiniMax智能体 agent_config config[agents][minimax] self.agent MiniMaxAgent(agent_config) # 注册智能体到框架 self.framework.register_agent(minimax, self.agent) logger.info(应用初始化完成) return True except Exception as e: logger.error(f应用初始化失败: {e}) return False async def run(self): 运行主循环 if not await self.initialize(): return self.running True logger.info(应用开始运行) # 设置信号处理 loop asyncio.get_event_loop() for sig in [signal.SIGINT, signal.SIGTERM]: loop.add_signal_handler(sig, self.shutdown) # 主循环 while self.running: try: await asyncio.sleep(1) except KeyboardInterrupt: self.shutdown() logger.info(应用正常退出) def shutdown(self): 关闭应用 logger.info(收到关闭信号正在清理资源...) self.running False if self.framework: self.framework.shutdown() async def main(): 主函数 app Application() await app.run() if __name__ __main__: # 配置日志 from src.utils.logger import setup_logging setup_logging() logger setup_logging().getLogger(__name__) try: asyncio.run(main()) except KeyboardInterrupt: logger.info(用户中断程序) except Exception as e: logger.error(f程序异常退出: {e}) sys.exit(1)5.3 集成测试用例编写完整的测试用例验证集成功能的正确性import pytest import asyncio from unittest.mock import Mock, patch from src.agents.minimax_agent import MiniMaxAgent from src.services.minimax_service import RobustMiniMaxService class TestMiniMaxIntegration: pytest.fixture def mock_minimax_service(self): 创建模拟的MiniMax服务 service Mock(specRobustMiniMaxService) service.generate_response.return_value 这是测试响应 return service pytest.fixture def minimax_agent(self, mock_minimax_service): 创建测试用的智能体实例 with patch(src.agents.minimax_agent.RobustMiniMaxService) as mock_service: mock_service.return_value mock_minimax_service agent_config { name: test-agent, model_config: { temperature: 0.7, max_tokens: 1024 } } agent MiniMaxAgent(agent_config) return agent pytest.mark.asyncio async def test_agent_initialization(self, minimax_agent): 测试智能体初始化 assert minimax_agent is not None assert minimax_agent.name test-agent pytest.mark.asyncio async def test_message_processing(self, minimax_agent, mock_minimax_service): 测试消息处理流程 from raven.messages import AgentMessage # 创建测试消息 test_message AgentMessage( content你好请介绍一下你自己, senderuser, timestamp1234567890 ) # 处理消息 response await minimax_agent.process_message(test_message) # 验证响应 assert response.content 这是测试响应 assert response.metadata[model] minimax mock_minimax_service.generate_response.assert_called_once() pytest.mark.asyncio async def test_error_handling(self, minimax_agent, mock_minimax_service): 测试错误处理 from raven.messages import AgentMessage # 模拟API调用失败 mock_minimax_service.generate_response.side_effect Exception(API调用失败) test_message AgentMessage( content测试消息, senderuser ) # 处理消息应该能正常处理异常 response await minimax_agent.process_message(test_message) assert 抱歉 in response.content assert error in response.metadata class TestEndToEnd: 端到端测试 pytest.mark.asyncio async def test_complete_workflow(self): 测试完整工作流程 # 这个测试需要真实的API密钥可以在CI/CD环境中运行 api_key os.getenv(TEST_MINIMAX_API_KEY) group_id os.getenv(TEST_MINIMAX_GROUP_ID) if not api_key or not group_id: pytest.skip(测试API密钥未配置) # 创建真实的服务实例 service RobustMiniMaxService(api_key, group_id) # 测试简单的对话 response await service.generate_response(你好) assert response is not None assert len(response) 0 # 验证响应是有效的中文文本 assert any(char in response for char in 你好谢谢) if __name__ __main__: # 运行测试 pytest.main([__file__, -v])6. 高级功能与定制化开发6.1 多轮对话上下文管理在实际对话场景中维护对话上下文至关重要。需要实现智能的上下文管理机制from collections import deque from typing import List, Dict import time class DialogueContextManager: def __init__(self, max_context_length: int 10, context_timeout: int 3600): self.max_context_length max_context_length self.context_timeout context_timeout self.contexts {} # 用户ID到对话上下文的映射 def get_user_context(self, user_id: str) - List[Dict]: 获取用户对话上下文 if user_id not in self.contexts: self.contexts[user_id] { messages: deque(maxlenself.max_context_length), last_activity: time.time() } context_data self.contexts[user_id] # 清理过期上下文 if time.time() - context_data[last_activity] self.context_timeout: context_data[messages].clear() context_data[last_activity] time.time() return list(context_data[messages]) def add_message(self, user_id: str, role: str, content: str): 添加消息到上下文 if user_id not in self.contexts: self.contexts[user_id] { messages: deque(maxlenself.max_context_length), last_activity: time.time() } message { role: role, content: content, timestamp: time.time() } self.contexts[user_id][messages].append(message) self.contexts[user_id][last_activity] time.time() def clear_context(self, user_id: str): 清空用户上下文 if user_id in self.contexts: self.contexts[user_id][messages].clear() class EnhancedMiniMaxAgent(MiniMaxAgent): def __init__(self, agent_config: Dict): super().__init__(agent_config) self.context_manager DialogueContextManager() async def process_message(self, message: AgentMessage) - AgentMessage: 增强的消息处理方法支持上下文管理 user_id message.sender or default_user # 获取对话上下文 context self.context_manager.get_user_context(user_id) try: # 生成响应 response_content await self.minimax_service.generate_response( message.content, context ) # 更新上下文 self.context_manager.add_message(user_id, user, message.content) self.context_manager.add_message(user_id, assistant, response_content) return AgentMessage( contentresponse_content, metadata{ model: minimax, context_length: len(context) 2 } ) except Exception as e: self.logger.error(f处理消息失败: {e}) return self.create_error_response(e)6.2 工具调用与外部服务集成智能体经常需要调用外部工具和服务Raven框架提供了完善的工具调用机制from raven.tools import BaseTool from typing import Dict, Any class WeatherTool(BaseTool): 天气查询工具示例 def __init__(self): super().__init__( nameweather, description查询城市天气信息, parameters{ city: { type: string, description: 城市名称 } } ) async def execute(self, parameters: Dict[str, Any]) - Dict[str, Any]: 执行天气查询 city parameters.get(city, 北京) # 这里可以集成真实的天气API # 示例返回模拟数据 return { city: city, temperature: 25°C, weather: 晴, humidity: 60% } class CalculatorTool(BaseTool): 计算器工具示例 def __init__(self): super().__init__( namecalculator, description执行数学计算, parameters{ expression: { type: string, description: 数学表达式 } } ) async def execute(self, parameters: Dict[str, Any]) - Dict[str, Any]: 执行计算 expression parameters.get(expression, ) try: # 安全评估数学表达式 result eval(expression, {__builtins__: {}}) return { expression: expression, result: result } except Exception as e: return { expression: expression, error: str(e) } class ToolEnhancedAgent(MiniMaxAgent): 支持工具调用的增强智能体 def __init__(self, agent_config: Dict): super().__init__(agent_config) self.tools {} self.register_tools() def register_tools(self): 注册可用工具 self.tools[weather] WeatherTool() self.tools[calculator] CalculatorTool() async def handle_tool_call(self, tool_name: str, parameters: Dict) - Dict: 处理工具调用 if tool_name not in self.tools: return {error: f工具 {tool_name} 不存在} tool self.tools[tool_name] return await tool.execute(parameters)7. 性能优化与监控7.1 响应时间优化在实际生产环境中响应时间是关键指标。以下是一些优化策略import time from functools import wraps from statistics import mean, median from concurrent.futures import ThreadPoolExecutor def timing_decorator(func): 计时装饰器 wraps(func) async def wrapper(*args, **kwargs): start_time time.time() try: result await func(*args, **kwargs) return result finally: end_time time.time() duration end_time - start_time logger.info(f{func.__name__} 执行时间: {duration:.3f}秒) return wrapper class PerformanceOptimizedService(MiniMaxService): 性能优化的MiniMax服务 def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.response_times [] self.max_history 1000 self.executor ThreadPoolExecutor(max_workers4) timing_decorator async def optimized_chat_completion(self, messages: List[Dict], **kwargs) - Dict[str, Any]: 优化的聊天补全方法 # 预处理消息减少不必要的上下文 optimized_messages self.optimize_message_length(messages) # 使用线程池处理IO密集型操作 loop asyncio.get_event_loop() result await loop.run_in_executor( self.executor, lambda: self.sync_chat_completion(optimized_messages, **kwargs) ) return result def optimize_message_length(self, messages: List[Dict]) - List[Dict]: 优化消息长度避免超过token限制 optimized [] total_length 0 for message in reversed(messages): content message.get(content, ) message_length len(content) if total_length message_length 3000: # 预留一些空间 break optimized.insert(0, message) total_length message_length return optimized def sync_chat_completion(self, messages: List[Dict], **kwargs) - Dict[str, Any]: 同步版本的聊天补全用于线程池执行 # 这里使用同步HTTP客户端 import requests import json url f{self.base_url}/chat/completion payload { model: kwargs.get(model, minimax-01), messages: messages, temperature: kwargs.get(temperature, 0.7), max_tokens: kwargs.get(max_tokens, 1024), group_id: self.group_id } response requests.post(url, jsonpayload, headersself.headers, timeout30) response.raise_for_status() return response.json()7.2 监控与指标收集建立完善的监控体系收集关键性能指标from dataclasses import dataclass from typing import Dict, List import time import psutil import asyncio dataclass class PerformanceMetrics: 性能指标数据类 timestamp: float response_time: float success: bool error_type: str None token_usage: int 0 memory_usage: float 0 class MonitoringSystem: 监控系统 def __init__(self): self.metrics: List[PerformanceMetrics] [] self.start_time time.time() def record_api_call(self, response_time: float, success: bool, error_type: str None, token_usage: int 0): 记录API调用指标 metrics PerformanceMetrics( timestamptime.time(), response_timeresponse_time, successsuccess, error_typeerror_type, token_usagetoken_usage, memory_usagepsutil.virtual_memory().percent ) self.metrics.append(metrics) # 保持最近1000条记录 if len(self.metrics) 1000: self.metrics self.metrics[-1000:] def get_summary_stats(self) - Dict: 获取统计摘要 if not self.metrics: return {} recent_metrics self.metrics[-100:] # 最近100次调用 success_calls [m for m in recent_metrics if m.success] error_calls [m for m in recent_metrics if not m.success] return { total_calls: len(recent_metrics), success_rate: len(success_calls) / len(recent_metrics) if recent_metrics else 0, avg_response_time: mean([m.response_time for m in success_calls]) if success_calls else 0, error_breakdown: self._get_error_breakdown(error_calls), avg_token_usage: mean([m.token_usage for m in success_calls]) if success_calls else 0 } def _get_error_breakdown(self, error_calls: List[PerformanceMetrics]) - Dict: 获取错误分类统计 breakdown {} for metrics in error_calls: error_type metrics.error_type or unknown breakdown[error_type] breakdown.get(error_type, 0) 1 return breakdown class MonitoredMiniMaxService(RobustMiniMaxService): 带监控的MiniMax服务 def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.monitoring MonitoringSystem() async def monitored_chat_completion(self, messages: List[Dict], **kwargs) - Dict[str, Any]: 带监控的聊天补全 start_time time.time() try: result await super().robust_chat_completion(messages, **kwargs) response_time time.time() - start_time # 计算token使用量 token_usage result.get(usage, {}).get(total_tokens, 0) self.monitoring.record_api_call( response_timeresponse_time, successTrue, token_usagetoken_usage ) return result except Exception as e: response_time time.time() - start_time self.monitoring.record_api_call( response_timeresponse_time, successFalse, error_typetype(e).__name__ ) raise e8. 部署与生产环境配置8.1 Docker容器化

本月热点