Commit fb872812 authored by 何家明's avatar 何家明

调整会话保持逻辑

parent 5c1cb255
...@@ -27,7 +27,6 @@ class McpClient: ...@@ -27,7 +27,6 @@ class McpClient:
self.default_system_prompt = None # mcp_server提供的默认提示词 self.default_system_prompt = None # mcp_server提供的默认提示词
self.available_tools: [] = None # mcp_server提供的tool self.available_tools: [] = None # mcp_server提供的tool
self.session: Optional[ClientSession] = None self.session: Optional[ClientSession] = None
# self.exit_stack = AsyncExitStack()
active_model = config["model"][config["active"]] active_model = config["model"][config["active"]]
self.client = AsyncOpenAI( self.client = AsyncOpenAI(
api_key=active_model["api_key"], api_key=active_model["api_key"],
...@@ -39,33 +38,26 @@ class McpClient: ...@@ -39,33 +38,26 @@ class McpClient:
args=config["server"]["args"], args=config["server"]["args"],
) )
async def _session_ping(self): async def _session_keepalive(self):
logger.info(f"Start to get stdio client...") logger.info("Start to get stdio client...")
async with stdio_client(self.server_params) as client: async with stdio_client(self.server_params) as client:
logger.info(f"Start to get stdio client session...") logger.info("Start to get stdio client session...")
async with ClientSession(*client) as session: async with ClientSession(*client) as session:
logger.info(f"Start to initialize stdio client session...") logger.info("Start to initialize stdio client session...")
await session.initialize() await session.initialize()
logger.info(f"End to initialize stdio client session...") logger.info("End to initialize stdio client session...")
self.session = session self.session = session
await self.read_mcp()
try: try:
while True: while True:
logger.info(f"Start to ping stdio client session...") logger.info("Start to ping stdio client session...")
await asyncio.sleep(10) await asyncio.sleep(10)
await session.send_ping() await session.send_ping()
logger.info(f"End to ping stdio client session...") logger.info("End to ping stdio client session...")
except Exception as e: except Exception as e:
logger.exception(e) logger.exception(e)
self.session = None self.session = None
async def _session_keepalive(self):
while True:
try:
logger.info(f"Start to keep session alive...")
await self._session_ping()
except Exception as e:
logger.exception(e)
async def start(self): async def start(self):
asyncio.create_task(self._session_keepalive()) asyncio.create_task(self._session_keepalive())
...@@ -207,7 +199,6 @@ async def lifespan(app): ...@@ -207,7 +199,6 @@ async def lifespan(app):
async def user_query(message: str, customer_id: str): async def user_query(message: str, customer_id: str):
try: try:
await instance.read_mcp()
async for r in instance.process_query(message, customer_id): async for r in instance.process_query(message, customer_id):
yield r yield r
except Exception as e: except Exception as e:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment