test02.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import os
  2. from langgraph.graph import StateGraph, START, END
  3. from langgraph.graph.message import add_messages
  4. from langchain_openai import ChatOpenAI
  5. # --------------- 基本配置 ----------------
  6. # 1) 设置 API Key & Base URL
  7. # 假设你已经通过 DeepSeek QPI 获取到了兼容 OpenAI 的 key & endpoint
  8. os.environ["OPENAI_API_KEY"] = "YOUR_QPI_API_KEY"
  9. # 如果 DeepSeek QPI 需要自定义 Base URL,请设置:
  10. # os.environ["OPENAI_API_BASE"] = "https://your-provider-url/v1"
  11. # 2) 初始化 LLM
  12. # deepseek/deepseek-r1 通常在 QPI/OpenRouter 兼容 API 下可调用
  13. llm = ChatOpenAI(model="deepseek/deepseek-r1:latest", temperature=0.7)
  14. # --------------- LangGraph 节点 ----------------
  15. def call_deepseek(state):
  16. """
  17. 一个简单的函数节点,它用 LLM 理解 state["messages"]
  18. 并返回下一步 messages
  19. """
  20. user_msgs = state["messages"]
  21. # 调用 LLM
  22. response = llm(
  23. # LangChain 格式要求 messages 是 dict 列表
  24. messages=user_msgs
  25. )
  26. # 获取模型输出的 text
  27. ai_msg = response["choices"][0]["message"]
  28. # 将 AI 的回复追加回状态
  29. return {"messages": user_msgs + [ai_msg]}
  30. # --------------- 构建状态图 ----------------
  31. # 状态类型使用 LangChain 的消息状态对象
  32. from langgraph.graph import MessagesState
  33. graph = StateGraph(MessagesState)
  34. # 添加节点到图
  35. graph.add_node(call_deepseek)
  36. # 定义边 (Start → 我们的 LLM 节点 → End)
  37. graph.add_edge(START, "call_deepseek")
  38. graph.add_edge("call_deepseek", END)
  39. # 编译图
  40. compiled_graph = graph.compile()
  41. # --------------- 调用运行 ----------------
  42. result = compiled_graph.invoke({
  43. "messages": [
  44. {"role": "user", "content": "你好,帮我写一段 LangGraph 入门示例说明"}
  45. ]
  46. })
  47. # 输出最终状态
  48. print(result["messages"][-1]["content"])