汉字叔叔花了多少钱做网站,做h5页面的网站有哪些,直播app开发平台软件,手机网站开发相关问题请设置正确你的deepseek的key#xff0c;最近无法免费使用了#xff0c;所以你需要充钱#xff0c;然后获取key#xff0c;key就是到官网注册账号#xff0c;根据这个key进行计费的#xff0c;所以需要保管好#xff0c;其他key类似的#xff0c;不明白的请百度吧…请设置正确你的deepseek的key最近无法免费使用了所以你需要充钱然后获取keykey就是到官网注册账号根据这个key进行计费的所以需要保管好其他key类似的不明白的请百度吧下面将直接上代码了
from typing import Annotatedfrom langchain_deepseek import ChatDeepSeek
from langchain_tavily import TavilySearch
from langchain_core.messages import BaseMessage
from typing_extensions import TypedDictfrom langgraph.graph import StateGraph
from langgraph.graph.message import add_messages
from langgraph.prebuilt import ToolNode, tools_conditionfrom langchain.chat_models import init_chat_modelimport os
from dotenv import load_dotenv# 加载.env文件中的环境变量
load_dotenv()class State(TypedDict):messages:Annotated[list, add_messages]graph_builder StateGraph(State)# llm init_chat_model(
# deepseek-chat, # 使用DeepSeek模型
# api_keyos.environ.get(DEEPSEEK_API_KEY)
# )llm ChatDeepSeek(modeldeepseek-chat,api_keyos.getenv(DEEPSEEK_API_KEY))
# mess llm.invoke(input 你是谁)# 初始化搜索工具
tool TavilySearch(max_results2)
tools [tool]# 将工具绑定到llm中
llm_with_tools llm.bind_tools(tools)
def chatbot(state:State):return {messages:[llm_with_tools.invoke(state[messages])]}# 添加聊天机器人节点
graph_builder.add_node(chatbot,chatbot)
# 添加工具节点
tool_node ToolNode(tools[tool])
graph_builder.add_node(tools,tool_node)
# 添加条件边
graph_builder.add_conditional_edges(chatbot,tools_condition)# 工具调用完成后返回聊天机器人节点
graph_builder.add_edge(tools,chatbot)
graph_builder.set_entry_point(chatbot)
graph graph_builder.compile()# 打印图结构
print(graph.get_graph().draw_mermaid())
graph_png graph.get_graph().draw_mermaid_png()
with open(chatbot_workflow.png, wb) as f:f.write(graph_png)def stream_graph_updates(user_input:str):for event in graph.stream({messages: [{role: user, content: user_input}]}):for value in event.values():print(Assistant:, value[messages][-1].content)while True:try:user_input input(User: )if user_input.lower() in [quit, exit, q]:print(Goodbye!)breakstream_graph_updates(user_input)except KeyboardInterrupt:print(\nGoodbye!)breakprint(done)
这里我们导入了必要的库包括
typing 和 typing_extensions 用于类型注释langchain.chat_models 用于初始化聊天模型langgraph.graph 提供了构建状态图的核心组件os 和 dotenv 用于环境变量管理
加载环境变量
load_dotenv()这行代码会从项目根目录的 .env 文件中加载环境变量包括我们的 DEEPSEEK_API_KEY。不懂的仔细百度这个函数和库学习一下啊
其他的代码中都有注释
我们成功地增强了聊天机器人使其具备了使用外部工具的能力。通过集成Tavily搜索API我们的聊天机器人现在可以
识别需要外部信息的问题自动调用搜索工具获取相关信息处理搜索结果并生成基于这些信息的回答
这种增强极大地扩展了聊天机器人的能力范围使其不再局限于模型的训练数据。
我们还学习了LangGraph的几个重要概念
工具绑定Tool Binding通过bind_tools方法将工具与LLM集成预构建组件使用ToolNode和tools_condition简化工具处理条件边根据状态动态决定执行流程循环流程创建包含循环的复杂工作流