{ "cells": [ { "cell_type": "code", "id": "initial_id", "metadata": { "collapsed": true, "ExecuteTime": { "end_time": "2026-08-13T09:21:13.074558Z", "start_time": "2026-08-13T09:21:12.287225Z" } }, "source": [ "from typing import Literal\n", "\n", "from dotenv import load_dotenv\n", "from langchain.chat_models import init_chat_model\n", "import os\n", "\n", "from langchain_core.messages import ToolMessage\n", "from langgraph.graph import MessagesState, StateGraph, START, END\n", "\n", "from loguru import logger\n", "\n", "load_dotenv(override=True)\n", "\n", "llm = init_chat_model(\n", " model=\"openai:qwen3.6-flash\",\n", " base_url=os.getenv(\"BASE_URL\"),\n", " api_key=os.getenv(\"API_KEY\")\n", ")\n", "\n", "from langchain.tools import tool\n", "\n", "\n", "@tool(parse_docstring=True)\n", "def get_weather(city: str) -> str:\n", " \"\"\"\n", " 查询指定城市天气\n", "\n", " Args:\n", " city: 城市名称\n", " \"\"\"\n", " return f\"{city}今天天气不错\"\n", "\n", "\n", "@tool(parse_docstring=True)\n", "def get_new(home_or_abroad: bool) -> str:\n", " \"\"\"\n", " 查询国内外新闻\n", "\n", " Args:\n", " home_or_abroad: True,查询国内新闻。False,查询国外新闻\n", " \"\"\"\n", " if home_or_abroad:\n", " return \"Kimi 3 发布\"\n", " return \"Anthropic破产\"\n", "\n", "\n", "llm_with_tools = llm.bind_tools(tools=[get_weather, get_new])\n", "\n", "tools_by_name = {\n", " \"get_new\": get_new,\n", " \"get_weather\": get_weather\n", "}" ], "outputs": [], "execution_count": 1 }, { "metadata": { "ExecuteTime": { "end_time": "2026-08-13T09:21:13.097176Z", "start_time": "2026-08-13T09:21:13.079676Z" } }, "cell_type": "code", "source": [ "def llm_node(state: MessagesState) -> MessagesState:\n", " response = llm_with_tools.invoke(state[\"messages\"])\n", " return {\n", " \"messages\": [response]\n", " }\n", "\n", "\n", "# def tool_node(state: MessagesState) -> MessagesState:\n", "# last_msg = state[\"messages\"][-1]\n", "# if not last_msg.tool_calls:\n", "# return {}\n", "#\n", "# tool_msgs = []\n", "# for tool_call in last_msg.tool_calls:\n", "# tool = tools_by_name[tool_call[\"name\"]]\n", "# logger.info(f\"工具{tool_call[\"name\"]}被调用,对应的tool_call:{tool_call}\")\n", "# tool_res = tool.invoke(tool_call[\"args\"])\n", "# tool_msg = ToolMessage(\n", "# name=tool_call[\"name\"],\n", "# content=tool_res,\n", "# tool_call_id=tool_call[\"id\"]\n", "# )\n", "# tool_msgs.append(tool_msg)\n", "# return {\n", "# \"messages\": [tool_msgs]\n", "# }\n", "\n", "\n", "def router(state: MessagesState) -> Literal[\"tool_node\", END]:\n", " if state[\"messages\"][-1].tool_calls:\n", " return \"tool_node\"\n", " return END" ], "id": "197859b38e6cdc8f", "outputs": [], "execution_count": 2 }, { "metadata": { "ExecuteTime": { "end_time": "2026-08-13T09:21:13.105691Z", "start_time": "2026-08-13T09:21:13.098337Z" } }, "cell_type": "code", "source": [ "from langgraph.prebuilt.tool_node import ToolNode\n", "\n", "builder = StateGraph(state_schema=MessagesState)\n", "builder.add_node(\"llm_node\", llm_node)\n", "builder.add_node(\"tool_node\", ToolNode(tools=[get_new, get_weather]))\n", "builder.add_edge(START, \"llm_node\")\n", "builder.add_conditional_edges(\"llm_node\", router, path_map=[\"tool_node\", END])\n", "builder.add_edge(\"tool_node\", \"llm_node\")\n", "graph = builder.compile()" ], "id": "d7535e27f7e7d3f", "outputs": [], "execution_count": 3 }, { "metadata": { "ExecuteTime": { "end_time": "2026-08-13T09:21:15.673171Z", "start_time": "2026-08-13T09:21:13.110948Z" } }, "cell_type": "code", "source": [ "from IPython.display import display\n", "\n", "display(graph)" ], "id": "d8691d77b8857251", "outputs": [ { "data": { "text/plain": [ "" ], "image/png": "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" }, "metadata": {}, "output_type": "display_data" } ], "execution_count": 4 }, { "metadata": { "ExecuteTime": { "end_time": "2026-08-13T09:21:26.253094Z", "start_time": "2026-08-13T09:21:15.695629Z" } }, "cell_type": "code", "source": [ "from langchain_core.messages import HumanMessage\n", "from rich import print as rp\n", "\n", "res = graph.invoke({\"messages\": [HumanMessage(\"今天北京天气如何?国内有哪些新闻\")]})\n", "for msg in res['messages']:\n", " msg.pretty_print()" ], "id": "90799a0baaf94a1a", "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "================================\u001B[1m Human Message \u001B[0m=================================\n", "\n", "今天北京天气如何?国内有哪些新闻\n", "==================================\u001B[1m Ai Message \u001B[0m==================================\n", "Tool Calls:\n", " get_weather (call_763ec6c0b813497aba36bbfe)\n", " Call ID: call_763ec6c0b813497aba36bbfe\n", " Args:\n", " city: 北京\n", " get_new (call_7ed3fab8ae8a45ddac811c62)\n", " Call ID: call_7ed3fab8ae8a45ddac811c62\n", " Args:\n", " home_or_abroad: True\n", "=================================\u001B[1m Tool Message \u001B[0m=================================\n", "Name: get_weather\n", "\n", "北京今天天气不错\n", "=================================\u001B[1m Tool Message \u001B[0m=================================\n", "Name: get_new\n", "\n", "Kimi 3 发布\n", "==================================\u001B[1m Ai Message \u001B[0m==================================\n", "\n", "北京今天的天气情况为不错。关于国内的新闻,目前获取到的信息显示有“Kimi 3 发布”这一动态,若需了解更全面的国内新闻详情,可能需要进一步查询补充。\n" ] } ], "execution_count": 5 } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 5 }