项目简介
'Realtime-Synthetic-Call-Center-Agents' 是一个企业级的AI联络中心解决方案,它集成了实时语音交互、多智能体编排和Azure AI服务。其中包含一个独立的 Azure AI Foundry MCP 服务器,该服务器遵循Model Context Protocol (MCP) 标准,负责将Azure AI Foundry的Web搜索功能封装为LLM可调用的工具,并通过JSON-RPC协议提供服务。
主要功能点
- MCP 协议实现: 严格遵循Model Context Protocol (MCP) 规范,通过JSON-RPC 2.0协议处理LLM客户端请求。
- 工具发现 ('tools/list'): 允许LLM客户端查询服务器支持的工具列表及其输入参数schema。目前提供'search_web_ai_foundry'工具用于网页搜索。
- 工具执行 ('tools/call'): 接收LLM客户端发起的工具调用请求,并将'search_web_ai_foundry'请求转发给Azure AI Foundry的Bing搜索智能体进行执行。
- Azure AI Foundry 集成: 与Azure AI Foundry服务深度集成,利用其智能体功能和Bing搜索能力提供实时、精确的网页搜索结果。
- 无状态设计: MCP服务器本身设计为无状态,每个工具调用都会创建一个临时会话来执行任务,完成后立即清理。
安装步骤
-
克隆仓库:
git clone https://github.com/HaoZhang615/Realtime-Synthetic-Call-Center-Agents.git cd Realtime-Synthetic-Call-Center-Agents -
配置环境: 确保您已登录Azure并安装Azure Developer CLI ('azd')。您需要配置Azure AI Foundry和Azure OpenAI的相关环境变量,包括:
- 'AZURE_AI_FOUNDRY_ENDPOINT': Azure AI Foundry 帐户的端点。
- 'AZURE_AI_FOUNDRY_PROJECT_ID': Azure AI Foundry 项目的完整资源ID。
- 'AZURE_AI_FOUNDRY_BING_CONNECTION_ID': Azure AI Foundry 中Bing搜索连接的完整资源ID。
- 'AZURE_OPENAI_GPT_CHAT_DEPLOYMENT': 用于智能体的OpenAI聊天模型部署名称(例如 'gpt-4.1-nano')。
- 'AZURE_AI_SERVICES_KEY' (可选): 如果不使用托管身份,需要Azure AI服务的密钥。
- 'AZURE_USER_ASSIGNED_IDENTITY_ID' (可选): 如果使用用户分配的托管身份,需要其资源ID。
建议使用Azure Developer CLI部署必要的Azure服务,这将自动配置大部分环境变量:
az login azd auth login azd up -
构建并运行MCP服务器: 进入MCP服务器项目目录,安装依赖,并启动服务。
# 切换到MCP服务器目录 cd src/mcp-servers/ai-foundry-agent # 安装Python依赖(假设存在requirements.txt,如果没有则手动安装列出的库) pip install -r requirements.txt # 或者手动安装核心依赖:pip install fastapi uvicorn python-dotenv azure-ai-projects azure-identity httpx tenacity pydantic # 启动MCP服务器 uvicorn main:app --host 0.0.0.0 --port 8888 --log-level info您也可以在项目根目录使用提供的本地开发脚本,它会同时启动MCP服务器(监听 '8888' 端口)、后端API(监听 '8000' 端口)和前端(监听 '5173' 端口):
.\start-local-dev.ps1服务器启动后,可以通过访问 'http://localhost:8888/health' 检查其健康状态。
服务器配置 (MCP客户端使用)
MCP客户端需要以下JSON格式的配置信息才能与此MCP服务器建立连接。请根据您的实际部署情况替换 'host' 和 'port'。
{ "server_name": "Azure AI Foundry Web Search", "description": "提供基于Azure AI Foundry和Bing搜索的实时网页搜索能力。通过Model Context Protocol (MCP) 进行通信,支持工具发现 (tools/list) 和工具执行 (tools/call)。", "command": "python", "args": [ "src/mcp-servers/ai-foundry-agent/main.py" ], "host": "http://localhost", "port": 8888, "protocol": "jsonrpc-http" }
- 'server_name': 此MCP服务器的友好名称,将在MCP客户端界面中显示。
- 'description': 对此MCP服务器功能的简要说明。
- 'command': 启动MCP服务器进程的命令。在Linux/macOS上通常是 'python',Windows上可能是 'python.exe'。
- 'args': 传递给 'command' 的参数列表。这里指向MCP服务器的启动脚本。
- 'host': MCP服务器监听的IP地址或域名。例如,在本地开发环境中通常是 'http://localhost'。如果部署到云端,则应是其外部可访问的URL。
- 'port': MCP服务器监听的端口号。默认为 '8888'。
- 'protocol': MCP服务器使用的通信协议,此处为 'jsonrpc-http'。
基本使用方法
此MCP服务器不直接面向终端用户,而是作为LLM客户端(如本项目中的FastAPI后端)的上下文服务。LLM客户端将通过上述配置信息连接到MCP服务器。
- LLM客户端初始化: LLM客户端(例如本项目中的'services/mcp_client.py')会创建 'MCPClient' 实例,并使用配置中的 'host' 和 'port' 连接到此MCP服务器。
- 工具发现: LLM客户端可以通过调用MCP服务器的 'tools/list' 方法,获取当前可用的工具列表,包括 'search_web_ai_foundry' 及其详细的 'inputSchema'。
- 工具执行: 当LLM需要执行网页搜索时,LLM客户端会根据 'search_web_ai_foundry' 的 'inputSchema' 构造参数(例如提供 'query'),然后调用MCP服务器的 'tools/call' 方法来执行该工具。MCP服务器将转发请求至Azure AI Foundry,获取搜索结果,并通过JSON-RPC响应返回给LLM客户端。
- 结果利用: LLM客户端接收到工具执行结果后,可以将其作为上下文信息提供给LLM,帮助LLM生成更准确、时效性更强的响应。
信息
分类
AI与计算