forked from lingyuzeng/agent
langgraph basic use in tool inject
This commit is contained in:
65
examples/qwen_langgraph_react.py
Normal file
65
examples/qwen_langgraph_react.py
Normal file
@@ -0,0 +1,65 @@
|
||||
"""
|
||||
Minimal LangGraph ReAct agent using Qwen3-Coder(-Flash) via OpenAI-compatible API.
|
||||
|
||||
Prereqs:
|
||||
pip install -U langgraph langchain langchain-openai
|
||||
|
||||
Env:
|
||||
export QWEN_API_KEY=sk-...
|
||||
export QWEN_BASE_URL=https://dashscope-intl.aliyuncs.com/compatible-mode/v1 # or your gateway
|
||||
export QWEN_MODEL=qwen3-coder-flash # use console's actual model name
|
||||
"""
|
||||
import sys,os
|
||||
|
||||
|
||||
from typing import Optional
|
||||
|
||||
from langgraph.prebuilt import create_react_agent
|
||||
from langchain_core.messages import HumanMessage
|
||||
|
||||
try:
|
||||
from langchain.tools import tool
|
||||
except Exception: # older versions
|
||||
from langchain_core.tools import tool # type: ignore
|
||||
|
||||
from langgraph_qwen import ChatQwenOpenAICompat, bind_qwen_tools
|
||||
|
||||
|
||||
@tool
|
||||
def get_time(_: str = "") -> str:
|
||||
"""Get current local time in ISO format."""
|
||||
import datetime as _dt
|
||||
return _dt.datetime.now().isoformat()
|
||||
|
||||
|
||||
@tool
|
||||
def add(x_and_y: str) -> str:
|
||||
"""Add two integers given as 'x y'."""
|
||||
xs = [int(s) for s in x_and_y.strip().split()]
|
||||
if len(xs) != 2:
|
||||
return "Please provide two integers: 'x y'"
|
||||
return str(xs[0] + xs[1])
|
||||
|
||||
|
||||
def main():
|
||||
# Prefer the custom adapter to avoid extra deps (langchain_openai)
|
||||
base = ChatQwenOpenAICompat(temperature=0)
|
||||
model = bind_qwen_tools(base, [get_time, add], tool_choice="auto")
|
||||
|
||||
agent = create_react_agent(model, [get_time, add])
|
||||
|
||||
# A prompt that can trigger multiple tool calls
|
||||
question = (
|
||||
"现在是几点?然后把 7 和 35 相加,并把两者结果合并成一句简洁中文回答。"
|
||||
)
|
||||
|
||||
result = agent.invoke({"messages": [HumanMessage(content=question)]})
|
||||
|
||||
# Unpack final message text
|
||||
last = result["messages"][-1]
|
||||
print("\n=== Agent Final Answer ===\n")
|
||||
print(getattr(last, "content", last))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user