import asyncio
import json
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate
from langchain_mcp_adapters.tools import load_mcp_tools
from langchain_openai import ChatOpenAI
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
from SmartVoyage.config import Config
from SmartVoyage.create_logger import logger
conf = Config()
# 初始化LLM
llm = ChatOpenAI(
model=conf.model_name,
base_url=conf.base_url,
api_key=conf.api_key,
temperature=0.1
)
async def order_tickets():
try:
# 启动 MCP server,通过streamable建立连接
async with streamablehttp_client("http://127.0.0.1:8003/mcp") as (read, write, _):
# 使用读写通道创建 MCP 会话
async with ClientSession(read, write) as session:
try:
await session.initialize()
# 从 session 自动获取 MCP server 提供的工具列表。
tools = await load_mcp_tools(session)
print(f"tools-->{tools}")
#测试订火车票
query = {"departure_date": "2026-07-08", "train_number": "G346", "seat_type": "二等座", "number": 1}
train_result = await session.call_tool("order_train", query)
train_result_data = json.loads(train_result) if isinstance(train_result, str) else train_result
print(train_result_data)
# 测试订飞机票
query = {"departure_date": "2026-07-08", "flight_number": "CA3301", "seat_type": "商务舱", "number": 1}
flight_result = await session.call_tool("order_flight", query)
flight_result_data = json.loads(flight_result) if isinstance(flight_result, str) else flight_result
print(flight_result_data)
# 测试订飞机票
query = {"start_date": "2026-07-09", "aritist": "刀郎", "venue": "北京体育馆","seat_type":"看台","number": 1}
concert_result = await session.call_tool("order_concert", query)
concert_result_data = json.loads(concert_result) if isinstance(concert_result, str) else concert_result
print(concert_result_data)
except Exception as e:
logger.info(f"票务 MCP 测试出错:{str(e)}")
except Exception as e:
logger.error(f"连接或会话初始化时发生错误: {e}")
if __name__ == "__main__":
#测试订火车票
asyncio.run(order_tickets())