{"repo": "c2sagent/c2sagent", "files": {"core/llm/llm_client.py": {"f87f1b9866b758eddef177248c8098445e5a160c": {"t": 1785746480.4356623, "n": 3985, "h": "3efc8993ec57b4be", "c": "import logging\r\nfrom typing import AsyncGenerator\r\nfrom openai import AsyncOpenAI\r\n\r\n\r\nclass LLMClient:\r\n def __init__(self, llm_url=\"\", api_key=\"\") -> None:\r\n self.api_key: str = api_key\r\n self.llm_url: str = llm_url\r\n pass\r\n\r\n async def get_stream_response_chat(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> AsyncGenerator[str, None]:\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-chat\"\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield {\"type\": \"text\", \"content\": delta.content}\r\n\r\n async def get_stream_response_reasion_and_content(\r\n self,\r\n messages: list[dict[str, str]],\r\n llm_url=None,\r\n api_key=None,\r\n model_name=\"deepseek-chat\",\r\n **params,\r\n ) -> AsyncGenerator[str, None]:\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=api_key, base_url=llm_url, timeout=30.0\r\n )\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=model_name, **params\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if hasattr(delta, \"reasoning_content\") and delta.reasoning_content:\r\n yield {\"type\": \"thought\", \"content\": delta.reasoning_content}\r\n\r\n if hasattr(delta, \"content\") and delta.content:\r\n yield {\"type\": \"text\", \"content\": delta.content}\r\n\r\n async def get_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> str:\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages,\r\n stream=False,\r\n model=\"deepseek-reasoner\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n logging.info(f\"Thinking: {response.choices[0].message.reasoning_content}\")\r\n logging.info(\r\n f\"AnswerContent=====================: {response.choices[0].message.content}\"\r\n )\r\n return response.choices[0].message.content\r\n\r\n async def get_stream_com_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> AsyncGenerator[str, None]:\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n\r\n result = \"\"\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.reasoning_content:\r\n yield delta.reasoning_content\r\n if delta.content:\r\n result += delta.content\r\n\r\n yield result\r\n\r\n async def get_response_chat(\r\n self, messages: list[dict[str, str]], llm_name, llm_url=None, api_key=None\r\n ):\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=False, model=llm_name\r\n )\r\n return response.choices[0].message.content\r\n"}, "eb34be0a3f6cccd707383cf6bee4054d398804f3": {"t": 1785764785.9387496, "n": 3985, "h": "3efc8993ec57b4be", "c": "import logging\r\nfrom typing import AsyncGenerator\r\nfrom openai import AsyncOpenAI\r\n\r\n\r\nclass LLMClient:\r\n def __init__(self, llm_url=\"\", api_key=\"\") -> None:\r\n self.api_key: str = api_key\r\n self.llm_url: str = llm_url\r\n pass\r\n\r\n async def get_stream_response_chat(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> AsyncGenerator[str, None]:\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-chat\"\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield {\"type\": \"text\", \"content\": delta.content}\r\n\r\n async def get_stream_response_reasion_and_content(\r\n self,\r\n messages: list[dict[str, str]],\r\n llm_url=None,\r\n api_key=None,\r\n model_name=\"deepseek-chat\",\r\n **params,\r\n ) -> AsyncGenerator[str, None]:\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=api_key, base_url=llm_url, timeout=30.0\r\n )\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=model_name, **params\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if hasattr(delta, \"reasoning_content\") and delta.reasoning_content:\r\n yield {\"type\": \"thought\", \"content\": delta.reasoning_content}\r\n\r\n if hasattr(delta, \"content\") and delta.content:\r\n yield {\"type\": \"text\", \"content\": delta.content}\r\n\r\n async def get_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> str:\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages,\r\n stream=False,\r\n model=\"deepseek-reasoner\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n logging.info(f\"Thinking: {response.choices[0].message.reasoning_content}\")\r\n logging.info(\r\n f\"AnswerContent=====================: {response.choices[0].message.content}\"\r\n )\r\n return response.choices[0].message.content\r\n\r\n async def get_stream_com_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> AsyncGenerator[str, None]:\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n\r\n result = \"\"\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.reasoning_content:\r\n yield delta.reasoning_content\r\n if delta.content:\r\n result += delta.content\r\n\r\n yield result\r\n\r\n async def get_response_chat(\r\n self, messages: list[dict[str, str]], llm_name, llm_url=None, api_key=None\r\n ):\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=False, model=llm_name\r\n )\r\n return response.choices[0].message.content\r\n"}, "18d8a53f47af2561b129bd8bd0dcfd172019aab1": {"t": 1785764787.2079175, "n": 3953, "h": "9cbcc18f7df73b23", "c": "import logging\r\nfrom typing import AsyncGenerator\r\nfrom openai import AsyncOpenAI\r\n\r\n\r\nclass LLMClient:\r\n def __init__(self, llm_url=\"\", api_key=\"\") -> None:\r\n self.api_key: str = api_key\r\n self.llm_url: str = llm_url\r\n pass\r\n\r\n async def get_stream_response_chat(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> AsyncGenerator[str, None]:\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-chat\"\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield {\"type\": \"text\", \"content\": delta.content}\r\n\r\n async def get_stream_response_reasion_and_content(\r\n self,\r\n messages: list[dict[str, str]],\r\n llm_url=None,\r\n api_key=None,\r\n model_name=\"deepseek-chat\",\r\n ) -> AsyncGenerator[str, None]:\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=api_key, base_url=llm_url, timeout=30.0\r\n )\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=model_name\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if hasattr(delta, \"reasoning_content\") and delta.reasoning_content:\r\n yield {\"type\": \"thought\", \"content\": delta.reasoning_content}\r\n\r\n if hasattr(delta, \"content\") and delta.content:\r\n yield {\"type\": \"text\", \"content\": delta.content}\r\n\r\n async def get_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> str:\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages,\r\n stream=False,\r\n model=\"deepseek-reasoner\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n logging.info(f\"Thinking: {response.choices[0].message.reasoning_content}\")\r\n logging.info(\r\n f\"AnswerContent=====================: {response.choices[0].message.content}\"\r\n )\r\n return response.choices[0].message.content\r\n\r\n async def get_stream_com_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> AsyncGenerator[str, None]:\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n\r\n result = \"\"\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.reasoning_content:\r\n yield delta.reasoning_content\r\n if delta.content:\r\n result += delta.content\r\n\r\n yield result\r\n\r\n async def get_response_chat(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ):\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=False, model=\"deepseek-chat\"\r\n )\r\n return response.choices[0].message.content\r\n"}, "71da3b60e04e7f3e532bfff8cd66fb9a063dedf0": {"t": 1785764789.677064, "n": 3783, "h": "a86a9b8115580389", "c": "import logging\r\nfrom typing import AsyncGenerator\r\nfrom openai import AsyncOpenAI\r\n\r\n\r\nclass LLMClient:\r\n def __init__(self, llm_url=\"\", api_key=\"\") -> None:\r\n self.api_key: str = api_key\r\n self.llm_url: str = llm_url\r\n\r\n async def get_stream_response_chat(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> AsyncGenerator[str, None]:\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-chat\"\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield {\"type\": \"text\", \"content\": delta.content}\r\n\r\n async def get_stream_response_reasion_and_content(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> AsyncGenerator[str, None]:\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.reasoning_content:\r\n yield {\"type\": \"thought\", \"content\": delta.reasoning_content}\r\n if delta.content:\r\n yield {\"type\": \"text\", \"content\": delta.content}\r\n\r\n async def get_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> str:\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages,\r\n stream=False,\r\n model=\"deepseek-reasoner\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n logging.info(f\"Thinking: {response.choices[0].message.reasoning_content}\")\r\n logging.info(\r\n f\"AnswerContent=====================: {response.choices[0].message.content}\"\r\n )\r\n return response.choices[0].message.content\r\n\r\n async def get_stream_com_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> AsyncGenerator[str, None]:\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n\r\n result = \"\"\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.reasoning_content:\r\n yield delta.reasoning_content\r\n if delta.content:\r\n result += delta.content\r\n\r\n yield result\r\n\r\n async def get_response_chat(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ):\r\n if llm_url and api_key:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=False, model=\"deepseek-chat\"\r\n )\r\n return response.choices[0].message.content\r\n"}, "52b92c1bea1b2c895739344596003a4c0dd01608": {"t": 1785764791.3660135, "n": 4396, "h": "bf65b3a0846ed885", "c": "import asyncio\r\nimport json\r\nimport logging\r\nimport os\r\nimport re\r\nimport shutil\r\nimport time\r\nfrom typing import AsyncGenerator\r\n\r\nfrom fastmcp import Client\r\nfrom mcp.types import TextContent, Tool\r\nfrom openai import AsyncOpenAI\r\nimport datetime\r\n\r\n\r\nclass LLMClient:\r\n def __init__(self, llm_url=\"\", api_key=\"\") -> None:\r\n self.api_key: str = api_key\r\n self.llm_url: str = llm_url\r\n # self.client: AsyncOpenAI = AsyncOpenAI(\r\n # api_key=self.api_key, base_url=self.llm_url\r\n # )\r\n pass\r\n\r\n async def get_stream_response(\r\n self, messages: list[dict[str, str]], llm_url, api_key\r\n ) -> AsyncGenerator[str, None]:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield delta.content\r\n\r\n async def get_stream_response_chat(\r\n self, messages: list[dict[str, str]], llm_url, api_key\r\n ) -> AsyncGenerator[str, None]:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-chat\"\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield delta.content\r\n\r\n async def get_stream_response_reasion_and_content(\r\n self, messages: list[dict[str, str]], llm_url, api_key\r\n ) -> AsyncGenerator[str, None]:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.reasoning_content:\r\n yield {\"type\": \"thought\", \"content\": delta.reasoning_content}\r\n if delta.content:\r\n yield {\"type\": \"text\", \"content\": delta.content}\r\n\r\n async def get_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> str:\r\n llm_url = llm_url\r\n api_key = api_key\r\n\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=api_key, base_url=llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages,\r\n stream=False,\r\n model=\"deepseek-reasoner\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n logging.info(f\"Thinking: {response.choices[0].message.reasoning_content}\")\r\n logging.info(\r\n f\"AnswerContent=====================: {response.choices[0].message.content}\"\r\n )\r\n return response.choices[0].message.content\r\n\r\n async def get_stream_com_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> AsyncGenerator[str, None]:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n\r\n result = \"\"\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.reasoning_content:\r\n yield delta.reasoning_content\r\n if delta.content:\r\n result += delta.content\r\n\r\n yield result\r\n\r\n async def get_response_chat(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ):\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=False, model=\"deepseek-chat\"\r\n )\r\n return response.choices[0].message.content\r\n"}, "469a6f1a38b08caa10f421e33080933af87e2e13": {"t": 1785764792.6656811, "n": 3935, "h": "f31f0f7a3c491e0a", "c": "import asyncio\r\nimport json\r\nimport logging\r\nimport os\r\nimport re\r\nimport shutil\r\nimport time\r\nfrom typing import AsyncGenerator\r\n\r\nfrom fastmcp import Client\r\nfrom mcp.types import TextContent, Tool\r\nfrom openai import AsyncOpenAI\r\nimport datetime\r\n\r\n\r\nclass LLMClient:\r\n def __init__(self, llm_url=\"\", api_key=\"\") -> None:\r\n self.api_key: str = api_key\r\n self.llm_url: str = llm_url\r\n # self.client: AsyncOpenAI = AsyncOpenAI(\r\n # api_key=self.api_key, base_url=self.llm_url\r\n # )\r\n pass\r\n\r\n async def get_stream_response(\r\n self, messages: list[dict[str, str]], llm_url, api_key\r\n ) -> AsyncGenerator[str, None]:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield delta.content\r\n\r\n async def get_stream_response_chat(\r\n self, messages: list[dict[str, str]], llm_url, api_key\r\n ) -> AsyncGenerator[str, None]:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-chat\"\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield delta.content\r\n\r\n async def get_stream_response_reasion_and_content(\r\n self, messages: list[dict[str, str]], llm_url, api_key\r\n ) -> AsyncGenerator[str, None]:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.reasoning_content:\r\n yield {\"type\": \"thought\", \"content\": delta.reasoning_content}\r\n if delta.content:\r\n yield {\"type\": \"text\", \"content\": delta.content}\r\n\r\n async def get_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> str:\r\n llm_url = llm_url\r\n api_key = api_key\r\n\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=api_key, base_url=llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages,\r\n stream=False,\r\n model=\"deepseek-reasoner\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n logging.info(f\"Thinking: {response.choices[0].message.reasoning_content}\")\r\n logging.info(\r\n f\"AnswerContent=====================: {response.choices[0].message.content}\"\r\n )\r\n return response.choices[0].message.content\r\n\r\n async def get_stream_com_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> AsyncGenerator[str, None]:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n\r\n result = \"\"\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.reasoning_content:\r\n yield delta.reasoning_content\r\n if delta.content:\r\n result += delta.content\r\n\r\n yield result\r\n"}, "b497768e5dbdc780942b4d84d5f8da07fe7e9a12": {"t": 1785764793.966061, "n": 2599, "h": "7f169d2e86e1a9ff", "c": "import asyncio\r\nimport json\r\nimport logging\r\nimport os\r\nimport re\r\nimport shutil\r\nimport time\r\nfrom typing import AsyncGenerator\r\n\r\nfrom fastmcp import Client\r\nfrom mcp.types import TextContent, Tool\r\nfrom openai import AsyncOpenAI\r\nimport datetime\r\n\r\n\r\nclass LLMClient:\r\n def __init__(self, llm_url=\"\", api_key=\"\") -> None:\r\n self.api_key: str = api_key\r\n self.llm_url: str = llm_url\r\n # self.client: AsyncOpenAI = AsyncOpenAI(\r\n # api_key=self.api_key, base_url=self.llm_url\r\n # )\r\n pass\r\n\r\n async def get_stream_response(\r\n self, messages: list[dict[str, str]], llm_url, api_key\r\n ) -> AsyncGenerator[str, None]:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield delta.content\r\n\r\n async def get_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> str:\r\n llm_url = llm_url\r\n api_key = api_key\r\n\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=api_key, base_url=llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages,\r\n stream=False,\r\n model=\"deepseek-reasoner\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n logging.info(f\"Thinking: {response.choices[0].message.reasoning_content}\")\r\n logging.info(\r\n f\"AnswerContent=====================: {response.choices[0].message.content}\"\r\n )\r\n return response.choices[0].message.content\r\n\r\n async def get_stream_com_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> AsyncGenerator[str, None]:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n\r\n result = \"\"\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.reasoning_content:\r\n result += delta.reasoning_content\r\n if delta.content:\r\n yield delta.content\r\n\r\n yield result\r\n"}, "773fa4260074c0aec096efd3421b3e6b0496a6c6": {"t": 1785764795.3846028, "n": 2981, "h": "75f6c3340e0eee18", "c": "import asyncio\r\nimport json\r\nimport logging\r\nimport os\r\nimport re\r\nimport shutil\r\nimport time\r\nfrom typing import AsyncGenerator\r\n\r\nfrom fastmcp import Client\r\nfrom mcp.types import TextContent, Tool\r\nfrom openai import AsyncOpenAI\r\nimport datetime\r\n\r\n\r\nclass LLMClient:\r\n def __init__(self, llm_url=\"\", api_key=\"\") -> None:\r\n self.api_key: str = api_key\r\n self.llm_url: str = llm_url\r\n # self.client: AsyncOpenAI = AsyncOpenAI(\r\n # api_key=self.api_key, base_url=self.llm_url\r\n # )\r\n pass\r\n\r\n async def get_stream_response(\r\n self, messages: list[dict[str, str]], llm_url, api_key\r\n ) -> AsyncGenerator[str, None]:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n print(\"大模型开始了流式\")\r\n print(messages)\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n print(\"模型输出了:\")\r\n print(delta.content)\r\n yield delta.content\r\n\r\n async def get_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> str:\r\n time.sleep(1)\r\n # if llm_url:\r\n print(\"==============================get_response=============================\")\r\n print(llm_url + \"======\")\r\n print(api_key + \"======\")\r\n print(messages)\r\n llm_url = llm_url\r\n api_key = api_key\r\n\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=api_key, base_url=llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages,\r\n stream=False,\r\n model=\"deepseek-reasoner\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n logging.info(f\"Thinking: {response.choices[0].message.reasoning_content}\")\r\n logging.info(\r\n f\"AnswerContent=====================: {response.choices[0].message.content}\"\r\n )\r\n return response.choices[0].message.content\r\n\r\n async def get_stream_com_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> str:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n print(\"大模型开始了流式\")\r\n print(messages)\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n\r\n result = \"\"\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.reasoning_content:\r\n result += delta.reasoning_content\r\n if delta.content:\r\n yield delta.content\r\n\r\n yield result\r\n"}, "a5cc86d40e5fb1352a7f9afad3e0534b5b5ad683": {"t": 1785764796.8463268, "n": 10218, "h": "90fc6ff46863998f", "c": "import asyncio\r\nimport json\r\nimport logging\r\nimport os\r\nimport re\r\nimport shutil\r\nimport time\r\nfrom typing import AsyncGenerator\r\n\r\nfrom fastmcp import Client\r\nfrom mcp.types import TextContent, Tool\r\nfrom openai import AsyncOpenAI\r\nimport datetime\r\n\r\n\r\nclass LLMClient:\r\n def __init__(self, llm_url=\"\", api_key=\"\") -> None:\r\n self.api_key: str = api_key\r\n self.llm_url: str = llm_url\r\n # self.client: AsyncOpenAI = AsyncOpenAI(\r\n # api_key=self.api_key, base_url=self.llm_url\r\n # )\r\n pass\r\n\r\n async def get_stream_response(\r\n self, messages: list[dict[str, str]], llm_url, api_key\r\n ) -> AsyncGenerator[str, None]:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n print(\"大模型开始了流式\")\r\n print(messages)\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield delta.content\r\n\r\n async def get_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> str:\r\n time.sleep(1)\r\n # if llm_url:\r\n print(\"==============================get_response=============================\")\r\n print(llm_url + \"======\")\r\n print(api_key + \"======\")\r\n print(messages)\r\n llm_url = llm_url\r\n api_key = api_key\r\n\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=api_key, base_url=llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages,\r\n stream=False,\r\n model=\"deepseek-reasoner\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n logging.info(f\"Thinking: {response.choices[0].message.reasoning_content}\")\r\n logging.info(\r\n f\"AnswerContent=====================: {response.choices[0].message.content}\"\r\n )\r\n return response.choices[0].message.content\r\n\r\n async def get_stream_com_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> str:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=self.api_key, base_url=self.llm_url)\r\n print(\"大模型开始了流式\")\r\n print(messages)\r\n response = await client.chat.completions.create(\r\n messages=messages, stream=True, model=\"deepseek-reasoner\"\r\n )\r\n\r\n result = \"\"\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.reasoning_content:\r\n result += delta.reasoning_content\r\n if delta.content:\r\n yield delta.content\r\n\r\n yield result\r\n\r\n\r\nasync def main():\r\n llm_client = LLMClient(\"None\", \"None\")\r\n # result = await llm_client.get_response(\r\n # [\r\n # {\r\n # \"role\": \"system\",\r\n # \"content\": 'You are a helpful assistant have access to these services and the tools they offer:\\n\\nService name: video_upload\\n\\n Tool Name: bilibili_video_upload\\n Description: 这是用来进行bilibili视频上传使用的,你在使用该函数时,至少拥有四个参数,video_title,video_url,cover_url,user_id,如果你没有video_title参数,你可以使用测试投稿;但是video_url,cover_url必须为真实的,如果你没有,请使用其他工具先获取两个真实的参数,然后再使用该函数。\\n Arguments:\\n - video_title: No description (required)\\n- video_desc: No description\\n- dynamic_text: No description\\n- video_url: No description (required)\\n- cover_url: No description (required)\\n- user_id: No description (required)\\n- sessdata: No description\\n- jct: No description\\n \\n\\n Tool Name: bilibili_video_get_url\\n Description: 这是用来获取bilibili的video_url和cover_url的,他会生成一个真实的视频和封面链接,他不需要传递任何参数,可以直接获取\\n Arguments:\\n \\n \\nChoose the appropriate tool based on the user\\'s question. If no tool is needed, reply directly.\\n\\nIMPORTANT: When you need to use a tool, you must ONLY respond with the exact JSON list object format below, nothing else:\\n[{\\n \"tool\": \"tool-name-1\",\\n \"arguments\": {\\n \"argument-name\": \"value\"\\n }\\n},\\n{\\n \"tool\": \"tool-name-2\",\\n \"arguments\": {\\n \"argument-name\": \"value\"\\n }\\n},]\\n\\nWhen using the tool, user will return the result, so please be careful to distinguish it.\\nWhen the user does not provide a specific date, the system uses 2025-08-07 as the baseline to coumpute the target date based on the user\\'s intentThe dates/times you provide should must match the user\\'s input exactly, be factually accurate, and must not fabricate false dates.After receiving a tool\\'s response:\\n1. Transform the raw data into a natural, conversational response\\n2. Keep responses concise but informative\\n3. Focus on the most relevant information\\n4. Use appropriate context from the user\\'s question\\n5. Avoid simply repeating the raw data\\n\\nPlease use only the tools that are explicitly defined above.',\r\n # },\r\n # {\"role\": \"user\", \"content\": \"用户要求使用mcp工具生成并上传视频到Bilibili,请协助完成该任务\"},\r\n # ],\r\n # llm_url=\"https://api.deepseek.com/v1\",\r\n # api_key=\"sk-7f49c72dbe9a4284b156701b84aa42a8\",\r\n # )\r\n # print(result)\r\n # result = await llm_client.get_response(\r\n # [\r\n # {\r\n # \"role\": \"system\",\r\n # \"content\": 'You are a helpful assistant have access to these services and the tools they offer:\\n\\nService name: video_upload\\n\\n Tool Name: bilibili_video_upload\\n Description: 这是用来进行bilibili视频上传使用的,你在使用该函数时,至少拥有四个参数,video_title,video_url,cover_url,user_id,如果你没有video_title参数,你可以使用测试投稿;但是video_url,cover_url必须为真实的,如果你没有,请使用其他工具先获取两个真实的参数,然后再使用该函数。\\n Arguments:\\n - video_title: No description (required)\\n- video_desc: No description\\n- dynamic_text: No description\\n- video_url: No description (required)\\n- cover_url: No description (required)\\n- user_id: No description (required)\\n- sessdata: No description\\n- jct: No description\\n \\n\\n Tool Name: bilibili_video_get_url\\n Description: 这是用来获取bilibili的video_url和cover_url的,他会生成一个真实的视频和封面链接,他不需要传递任何参数,可以直接获取\\n Arguments:\\n \\n \\nChoose the appropriate tool based on the user\\'s question. If no tool is needed, reply directly.\\n\\nIMPORTANT: When you need to use a tool, you must ONLY respond with the exact JSON list object format below, nothing else:\\n[{\\n \"tool\": \"tool-name-1\",\\n \"arguments\": {\\n \"argument-name\": \"value\"\\n }\\n},\\n{\\n \"tool\": \"tool-name-2\",\\n \"arguments\": {\\n \"argument-name\": \"value\"\\n }\\n},]\\n\\nWhen using the tool, user will return the result, so please be careful to distinguish it.\\nWhen the user does not provide a specific date, the system uses 2025-08-07 as the baseline to coumpute the target date based on the user\\'s intentThe dates/times you provide should must match the user\\'s input exactly, be factually accurate, and must not fabricate false dates.After receiving a tool\\'s response:\\n1. Transform the raw data into a natural, conversational response\\n2. Keep responses concise but informative\\n3. Focus on the most relevant information\\n4. Use appropriate context from the user\\'s question\\n5. Avoid simply repeating the raw data\\n\\nPlease use only the tools that are explicitly defined above.',\r\n # },\r\n # {\"role\": \"user\", \"content\": \"用户要求使用mcp工具生成并上传视频到Bilibili,请协助完成该任务\"},\r\n # ],\r\n # llm_url=\"https://api.deepseek.com/v1\",\r\n # api_key=\"sk-0ba18b6b63c84127b0873f1253b527a1\",\r\n # )\r\n # print(result)\r\n async for chunk in llm_client.get_stream_response(\r\n [\r\n {\r\n \"role\": \"system\",\r\n \"content\": 'You are a helpful assistant have access to these services and the tools they offer:\\n\\nService name: video_upload\\n\\n Tool Name: bilibili_video_upload\\n Description: 这是用来进行bilibili视频上传使用的,你在使用该函数时,至少拥有四个参数,video_title,video_url,cover_url,user_id,如果你没有video_title参数,你可以使用测试投稿;但是video_url,cover_url必须为真实的,如果你没有,请使用其他工具先获取两个真实的参数,然后再使用该函数。\\n Arguments:\\n - video_title: No description (required)\\n- video_desc: No description\\n- dynamic_text: No description\\n- video_url: No description (required)\\n- cover_url: No description (required)\\n- user_id: No description (required)\\n- sessdata: No description\\n- jct: No description\\n \\n\\n Tool Name: bilibili_video_get_url\\n Description: 这是用来获取bilibili的video_url和cover_url的,他会生成一个真实的视频和封面链接,他不需要传递任何参数,可以直接获取\\n Arguments:\\n \\n \\nChoose the appropriate tool based on the user\\'s question. If no tool is needed, reply directly.\\n\\nIMPORTANT: When you need to use a tool, you must ONLY respond with the exact JSON list object format below, nothing else:\\n[{\\n \"tool\": \"tool-name-1\",\\n \"arguments\": {\\n \"argument-name\": \"value\"\\n }\\n},\\n{\\n \"tool\": \"tool-name-2\",\\n \"arguments\": {\\n \"argument-name\": \"value\"\\n }\\n},]\\n\\nWhen using the tool, user will return the result, so please be careful to distinguish it.\\nWhen the user does not provide a specific date, the system uses 2025-08-07 as the baseline to coumpute the target date based on the user\\'s intentThe dates/times you provide should must match the user\\'s input exactly, be factually accurate, and must not fabricate false dates.After receiving a tool\\'s response:\\n1. Transform the raw data into a natural, conversational response\\n2. Keep responses concise but informative\\n3. Focus on the most relevant information\\n4. Use appropriate context from the user\\'s question\\n5. Avoid simply repeating the raw data\\n\\nPlease use only the tools that are explicitly defined above.',\r\n },\r\n {\"role\": \"user\", \"content\": \"您好\"},\r\n ],\r\n llm_url=\"https://api.deepseek.com/v1\",\r\n api_key=\"sk-7f49c72dbe9a4284b156701b84aa42a8\",\r\n ):\r\n print(chunk)\r\n\r\n\r\nif __name__ == \"__main__\":\r\n asyncio.run(main())\r\n"}, "a602923e59e0d6fb2cd88a83ff4250ea2e7e4d4e": {"t": 1785764798.6979587, "n": 7103, "h": "5a5e160d4cf84258", "c": "import asyncio\r\nimport json\r\nimport logging\r\nimport os\r\nimport re\r\nimport shutil\r\nimport time\r\nfrom typing import AsyncGenerator\r\n\r\nfrom fastmcp import Client\r\nfrom mcp.types import TextContent, Tool\r\nfrom openai import AsyncOpenAI\r\nimport datetime\r\n\r\n\r\nclass LLMClient:\r\n def __init__(self, llm_url=\"\", api_key=\"\") -> None:\r\n self.api_key: str = api_key\r\n self.llm_url: str = llm_url\r\n # self.client: AsyncOpenAI = AsyncOpenAI(\r\n # api_key=self.api_key, base_url=self.llm_url\r\n # )\r\n pass\r\n\r\n async def get_stream_response(\r\n self, messages: list[dict[str, str]], llm_url, api_key\r\n ) -> AsyncGenerator[str, None]:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n self.client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=self.api_key, base_url=self.llm_url\r\n )\r\n response = await self.client.chat.completions.create(\r\n messages=messages,\r\n stream=True,\r\n model=\"deepseek-chat\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield delta.content\r\n\r\n async def get_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> str:\r\n time.sleep(1)\r\n # if llm_url:\r\n print(\"==============================get_response=============================\")\r\n print(llm_url + \"======\")\r\n print(api_key + \"======\")\r\n print(messages)\r\n llm_url = llm_url\r\n api_key = api_key\r\n client: AsyncOpenAI = AsyncOpenAI(api_key=api_key, base_url=llm_url)\r\n response = await client.chat.completions.create(\r\n messages=messages,\r\n stream=False,\r\n model=\"deepseek-reasoner\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n logging.info(f\"Thinking: {response.choices[0].message.reasoning_content}\")\r\n logging.info(\r\n f\"AnswerContent=====================: {response.choices[0].message.content}\"\r\n )\r\n return response.choices[0].message.content\r\n\r\n\r\nasync def main():\r\n llm_client = LLMClient(\"None\", \"None\")\r\n result = await llm_client.get_response(\r\n [\r\n {\r\n \"role\": \"system\",\r\n \"content\": 'You are a helpful assistant have access to these services and the tools they offer:\\n\\nService name: video_upload\\n\\n Tool Name: bilibili_video_upload\\n Description: 这是用来进行bilibili视频上传使用的,你在使用该函数时,至少拥有四个参数,video_title,video_url,cover_url,user_id,如果你没有video_title参数,你可以使用测试投稿;但是video_url,cover_url必须为真实的,如果你没有,请使用其他工具先获取两个真实的参数,然后再使用该函数。\\n Arguments:\\n - video_title: No description (required)\\n- video_desc: No description\\n- dynamic_text: No description\\n- video_url: No description (required)\\n- cover_url: No description (required)\\n- user_id: No description (required)\\n- sessdata: No description\\n- jct: No description\\n \\n\\n Tool Name: bilibili_video_get_url\\n Description: 这是用来获取bilibili的video_url和cover_url的,他会生成一个真实的视频和封面链接,他不需要传递任何参数,可以直接获取\\n Arguments:\\n \\n \\nChoose the appropriate tool based on the user\\'s question. If no tool is needed, reply directly.\\n\\nIMPORTANT: When you need to use a tool, you must ONLY respond with the exact JSON list object format below, nothing else:\\n[{\\n \"tool\": \"tool-name-1\",\\n \"arguments\": {\\n \"argument-name\": \"value\"\\n }\\n},\\n{\\n \"tool\": \"tool-name-2\",\\n \"arguments\": {\\n \"argument-name\": \"value\"\\n }\\n},]\\n\\nWhen using the tool, user will return the result, so please be careful to distinguish it.\\nWhen the user does not provide a specific date, the system uses 2025-08-07 as the baseline to coumpute the target date based on the user\\'s intentThe dates/times you provide should must match the user\\'s input exactly, be factually accurate, and must not fabricate false dates.After receiving a tool\\'s response:\\n1. Transform the raw data into a natural, conversational response\\n2. Keep responses concise but informative\\n3. Focus on the most relevant information\\n4. Use appropriate context from the user\\'s question\\n5. Avoid simply repeating the raw data\\n\\nPlease use only the tools that are explicitly defined above.',\r\n },\r\n {\"role\": \"user\", \"content\": \"用户要求使用mcp工具生成并上传视频到Bilibili,请协助完成该任务\"},\r\n ],\r\n llm_url=\"https://api.deepseek.com/v1\",\r\n api_key=\"sk-7f49c72dbe9a4284b156701b84aa42a8\",\r\n )\r\n print(result)\r\n result = await llm_client.get_response(\r\n [\r\n {\r\n \"role\": \"system\",\r\n \"content\": 'You are a helpful assistant have access to these services and the tools they offer:\\n\\nService name: video_upload\\n\\n Tool Name: bilibili_video_upload\\n Description: 这是用来进行bilibili视频上传使用的,你在使用该函数时,至少拥有四个参数,video_title,video_url,cover_url,user_id,如果你没有video_title参数,你可以使用测试投稿;但是video_url,cover_url必须为真实的,如果你没有,请使用其他工具先获取两个真实的参数,然后再使用该函数。\\n Arguments:\\n - video_title: No description (required)\\n- video_desc: No description\\n- dynamic_text: No description\\n- video_url: No description (required)\\n- cover_url: No description (required)\\n- user_id: No description (required)\\n- sessdata: No description\\n- jct: No description\\n \\n\\n Tool Name: bilibili_video_get_url\\n Description: 这是用来获取bilibili的video_url和cover_url的,他会生成一个真实的视频和封面链接,他不需要传递任何参数,可以直接获取\\n Arguments:\\n \\n \\nChoose the appropriate tool based on the user\\'s question. If no tool is needed, reply directly.\\n\\nIMPORTANT: When you need to use a tool, you must ONLY respond with the exact JSON list object format below, nothing else:\\n[{\\n \"tool\": \"tool-name-1\",\\n \"arguments\": {\\n \"argument-name\": \"value\"\\n }\\n},\\n{\\n \"tool\": \"tool-name-2\",\\n \"arguments\": {\\n \"argument-name\": \"value\"\\n }\\n},]\\n\\nWhen using the tool, user will return the result, so please be careful to distinguish it.\\nWhen the user does not provide a specific date, the system uses 2025-08-07 as the baseline to coumpute the target date based on the user\\'s intentThe dates/times you provide should must match the user\\'s input exactly, be factually accurate, and must not fabricate false dates.After receiving a tool\\'s response:\\n1. Transform the raw data into a natural, conversational response\\n2. Keep responses concise but informative\\n3. Focus on the most relevant information\\n4. Use appropriate context from the user\\'s question\\n5. Avoid simply repeating the raw data\\n\\nPlease use only the tools that are explicitly defined above.',\r\n },\r\n {\"role\": \"user\", \"content\": \"用户要求使用mcp工具生成并上传视频到Bilibili,请协助完成该任务\"},\r\n ],\r\n llm_url=\"https://api.deepseek.com/v1\",\r\n api_key=\"sk-0ba18b6b63c84127b0873f1253b527a1\",\r\n )\r\n print(result)\r\n\r\n\r\nif __name__ == \"__main__\":\r\n asyncio.run(main())\r\n"}, "399f51e438cd260811bb5456dd23ecff0d9e9a53": {"t": 1785764799.9738493, "n": 2028, "h": "a4871bc95de34d3f", "c": "import json\r\nimport logging\r\nimport os\r\nimport re\r\nimport shutil\r\nfrom typing import AsyncGenerator\r\n\r\nfrom fastmcp import Client\r\nfrom mcp.types import TextContent, Tool\r\nfrom openai import AsyncOpenAI\r\nimport datetime\r\n\r\n\r\nclass LLMClient:\r\n def __init__(self, llm_url: str, api_key: str) -> None:\r\n self.api_key: str = api_key\r\n self.llm_url: str = llm_url\r\n self.client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=self.api_key, base_url=self.llm_url\r\n )\r\n\r\n async def get_stream_response(\r\n self, messages: list[dict[str, str]], llm_url, api_key\r\n ) -> AsyncGenerator[str, None]:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n self.client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=self.api_key, base_url=self.llm_url\r\n )\r\n response = await self.client.chat.completions.create(\r\n messages=messages,\r\n stream=True,\r\n model=\"deepseek-chat\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield delta.content\r\n\r\n async def get_response(\r\n self, messages: list[dict[str, str]], llm_url=None, api_key=None\r\n ) -> str:\r\n if llm_url:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n self.client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=self.api_key, base_url=self.llm_url\r\n )\r\n response = await self.client.chat.completions.create(\r\n messages=messages,\r\n stream=False,\r\n model=\"deepseek-reasoner\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n logging.info(f\"Thinking: {response.choices[0].message.reasoning_content}\")\r\n logging.info(\r\n f\"AnswerContent=====================: {response.choices[0].message.content}\"\r\n )\r\n return response.choices[0].message.content\r\n"}, "5f59600a6160cbdc42a0c03d6dab63bdbbb10bbf": {"t": 1785764801.5158036, "n": 2299, "h": "8e527a04259460e3", "c": "import json\r\nimport logging\r\nimport os\r\nimport re\r\nimport shutil\r\nfrom typing import AsyncGenerator\r\n\r\nfrom fastmcp import Client\r\nfrom mcp.types import TextContent, Tool\r\nfrom openai import AsyncOpenAI\r\nimport datetime\r\n\r\nclass LLMClient:\r\n def __init__(self, llm_url: str, api_key: str) -> None:\r\n self.api_key: str = api_key\r\n self.llm_url: str = llm_url\r\n self.client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=self.api_key, base_url=self.llm_url\r\n )\r\n\r\n async def get_stream_response(\r\n self, messages: list[dict[str, str]], llm_url, api_key\r\n ) -> AsyncGenerator[str, None]:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n print(\"=====================================================llm\")\r\n print(self.llm_url)\r\n print(self.api_key)\r\n self.client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=self.api_key, base_url=self.llm_url\r\n )\r\n response = await self.client.chat.completions.create(\r\n messages=messages,\r\n stream=True,\r\n model=\"deepseek-chat\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield delta.content\r\n\r\n async def get_response(self, messages: list[dict[str, str]], llm_url=None, api_key=None) -> str:\r\n print(\"================================================执行到了get_response的入口\")\r\n if llm_url:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n self.client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=self.api_key, base_url=self.llm_url\r\n )\r\n print(\"================================================执行到了get_response的response\")\r\n response = await self.client.chat.completions.create(\r\n messages=messages,\r\n stream=False,\r\n model=\"deepseek-reasoner\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n logging.info(f\"Thinking: {response.choices[0].message.reasoning_content}\")\r\n logging.info(f\"AnswerContent=====================: {response.choices[0].message.content}\")\r\n return response.choices[0].message.content\r\n\r\n"}, "5a45273af07f744f37010b2edd2cf9ad5d622682": {"t": 1785764802.9618382, "n": 2103, "h": "c0b51544e95024a7", "c": "import json\r\nimport logging\r\nimport os\r\nimport re\r\nimport shutil\r\nfrom typing import AsyncGenerator\r\n\r\nfrom fastmcp import Client\r\nfrom mcp.types import TextContent, Tool\r\nfrom openai import AsyncOpenAI\r\nimport datetime\r\n\r\nclass LLMClient:\r\n def __init__(self, llm_url: str, api_key: str) -> None:\r\n self.api_key: str = api_key\r\n self.llm_url: str = llm_url\r\n print(\"=====================================================llm\")\r\n print(self.llm_url)\r\n print(self.api_key)\r\n self.client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=self.api_key, base_url=self.llm_url\r\n )\r\n\r\n async def get_stream_response(\r\n self, messages: list[dict[str, str]], llm_url, api_key\r\n ) -> AsyncGenerator[str, None]:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n print(\"=====================================================llm\")\r\n print(self.llm_url)\r\n print(self.api_key)\r\n self.client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=self.api_key, base_url=self.llm_url\r\n )\r\n response = await self.client.chat.completions.create(\r\n messages=messages,\r\n stream=True,\r\n model=\"deepseek-chat\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield delta.content\r\n\r\n async def get_response(self, messages: list[dict[str, str]], llm_url, api_key) -> str:\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n self.client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=self.api_key, base_url=self.llm_url\r\n )\r\n response = await self.client.chat.completions.create(\r\n messages=messages,\r\n stream=False,\r\n model=\"deepseek-reasoner\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n logging.info(f\"Thinking: {response.choices[0].message.reasoning_content}\")\r\n return response.choices[0].message.content\r\n\r\n"}, "9d772caab176706790e1b5acf7dd9c3991e71b0a": {"t": 1785764804.3142369, "n": 1960, "h": "4d29496d19e53140", "c": "import json\r\nimport logging\r\nimport os\r\nimport re\r\nimport shutil\r\nfrom typing import AsyncGenerator\r\n\r\nfrom fastmcp import Client\r\nfrom mcp.types import TextContent, Tool\r\nfrom openai import AsyncOpenAI\r\nimport datetime\r\n\r\nclass LLMClient:\r\n def __init__(self, llm_url: str, api_key: str) -> None:\r\n self.api_key: str = api_key\r\n self.llm_url: str = llm_url\r\n print(\"=====================================================llm\")\r\n print(self.llm_url)\r\n print(self.api_key)\r\n self.client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=self.api_key, base_url=self.llm_url\r\n )\r\n\r\n async def get_stream_response(\r\n self, messages: list[dict[str, str]]\r\n ) -> AsyncGenerator[str, None]:\r\n response = await self.client.chat.completions.create(\r\n messages=messages,\r\n stream=True,\r\n model=\"deepseek-response\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield delta.content\r\n\r\n async def get_response(self, messages: list[dict[str, str]], llm_url, api_key) -> str:\r\n print(\"=============================================================\")\r\n print(messages)\r\n print(\"=============================================================\")\r\n self.llm_url = llm_url\r\n self.api_key = api_key\r\n self.client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=self.api_key, base_url=self.llm_url\r\n )\r\n response = await self.client.chat.completions.create(\r\n messages=messages,\r\n stream=False,\r\n model=\"deepseek-reasoner\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n logging.info(f\"Thinking: {response.choices[0].message.reasoning_content}\")\r\n return response.choices[0].message.content\r\n\r\n"}, "916797309954633abc4d785aa311996a754fe976": {"t": 1785764805.678705, "n": 1628, "h": "c29542d35fac6206", "c": "import json\r\nimport logging\r\nimport os\r\nimport re\r\nimport shutil\r\nfrom typing import AsyncGenerator\r\n\r\nfrom fastmcp import Client\r\nfrom mcp.types import TextContent, Tool\r\nfrom openai import AsyncOpenAI\r\nimport datetime\r\n\r\nclass LLMClient:\r\n def __init__(self, api_key: str, llm_url: str) -> None:\r\n self.api_key: str = api_key\r\n self.llm_url: str = llm_url\r\n self.client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=self.api_key, base_url=self.llm_url\r\n )\r\n\r\n async def get_stream_response(\r\n self, messages: list[dict[str, str]]\r\n ) -> AsyncGenerator[str, None]:\r\n response = await self.client.chat.completions.create(\r\n messages=messages,\r\n stream=True,\r\n model=\"deepseek-response\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield delta.content\r\n\r\n async def get_response(self, messages: list[dict[str, str]]) -> str:\r\n print(\"=============================================================\")\r\n print(messages)\r\n print(\"=============================================================\")\r\n response = await self.client.chat.completions.create(\r\n messages=messages,\r\n stream=False,\r\n model=\"deepseek-reasoner\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n logging.info(f\"Thinking: {response.choices[0].message.reasoning_content}\")\r\n return response.choices[0].message.content\r\n\r\n"}, "8e17ee85b16efa4ea7693a5e613301632daa3ea5": {"t": 1785764807.0643516, "n": 1591, "h": "2c4ceb9a0bd89886", "c": "import json\r\nimport logging\r\nimport os\r\nimport re\r\nimport shutil\r\nfrom typing import AsyncGenerator\r\n\r\nfrom fastmcp import Client\r\nfrom mcp.types import TextContent, Tool\r\nfrom openai import AsyncOpenAI\r\nimport datetime\r\n\r\nclass LLMClient:\r\n def __init__(self, api_key: str) -> None:\r\n self.api_key: str = api_key\r\n self.client: AsyncOpenAI = AsyncOpenAI(\r\n api_key=self.api_key, base_url=\"https://api.deepseek.com\"\r\n )\r\n\r\n async def get_stream_response(\r\n self, messages: list[dict[str, str]]\r\n ) -> AsyncGenerator[str, None]:\r\n response = await self.client.chat.completions.create(\r\n messages=messages,\r\n stream=True,\r\n model=\"deepseek-response\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n async for chunk in response:\r\n delta = chunk.choices[0].delta\r\n if delta.content:\r\n yield delta.content\r\n\r\n async def get_response(self, messages: list[dict[str, str]]) -> str:\r\n print(\"=============================================================\")\r\n print(messages)\r\n print(\"=============================================================\")\r\n response = await self.client.chat.completions.create(\r\n messages=messages,\r\n stream=False,\r\n model=\"deepseek-reasoner\",\r\n temperature=1.3,\r\n max_tokens=8192,\r\n )\r\n logging.info(f\"Thinking: {response.choices[0].message.reasoning_content}\")\r\n return response.choices[0].message.content\r\n\r\n"}}}}