LangSmith开发-应用入门

发布时间:2026-04-15 20:54:10编辑:123阅读(28)

    LangSmith开发-应用入门

    大模型具有不确定性,尤其是构建复杂AI Agent应用程序中,中间会涉及非常多的子步骤,如果想要了解每一步的运行状态和结果,一方面可以通过Debug来进行实时控制,而另一方面可以借助一些工具来观察和调试中间的交互流程,LangSmith就

    是这样一个工具平台,由LangChain和LangGraph背后的团队创建,主要作用是:为基于大语言模型构建的应用程序提供全面的监控、调试和可观察性。提供强大的跟踪、日志记录和实时分析功能。


    LangSmith官网:https://smith.langchain.com/

    注册账号,创建一个API-KEY

    image.pngimage.png

    通常,对于一个项目而言,可以是单个应用程序或服务。

    代码如下:

    from typing import Annotated
    from typing_extensions import TypedDict
    from langgraph.graph import StateGraph,START,END
    from langgraph.graph.message import add_messages
    from langchain_ollama import ChatOllama
    from langgraph.checkpoint.memory import MemorySaver
    import os
    
    os.environ['LANGSMITH_TRACING'] = 'true'
    os.environ['LANGSMITH_API_KEY'] = 'lsv2_pt_7a7db729daee4c949f09fxxxxxxxxxxxxxx'
    os.environ['LANGSMITH_PROJECT'] = 'langgraph_chatbot'
    
    
    # 定义状态类(会自动合并messages)
    class State(TypedDict):
        messages: Annotated[list, add_messages]
    
    # 初始化模型
    model = ChatOllama(
        model="qwen3:8b",
        temperature=0,
        top_p=0.95,
    )
    
    # 定义聊天节点
    def chatbot(state: State) -> State:
        reply = model.invoke(state["messages"])
        return {'messages': [reply]}
    
    # 构建带MemorySaver的图
    builder = StateGraph(State)
    builder.add_node('chatbot', chatbot)
    builder.add_edge(START, 'chatbot')
    builder.add_edge('chatbot', END)
    memory = MemorySaver()
    graph = builder.compile(checkpointer=memory)
    
    # 运行多轮对话,使用相同thread_id实现记忆
    thread_config = {"configurable":{"thread_id":"session_10"}}
    
    # 第一轮对话
    state1 = graph.invoke({"messages":[{"role":"user", "content":"我叫张三"}]}, config=thread_config)
    print(state1["messages"][-1].content)
    
    # 第二轮对话
    state2 = graph.invoke({"messages":[{"role":"user", "content":"我叫什么"}]}, config=thread_config)
    print(state2["messages"][-1].content)
    
    # 使用不同的thread_id,会开启全新对话
    state3 = graph.invoke({"messages":[{"role":"user", "content":"我叫什么"}]}, config={"configurable":
    {"thread_id":"session_2"}})
    print(state3["messages"][-1].content)
    
    # 查看记忆
    latest = graph.get_state(thread_config)
    print(latest.values['messages']) # 包含全部轮次对话

    运行结果:

    你好,张三!很高兴认识你。有什么我可以帮你的吗?是想讨论某个话题,还是需要解决某个问题?随时告诉我哦! 😊

    你叫张三!😊 有什么我可以帮你的吗?

    你好!我是通义千问,你可以叫我Qwen。有什么问题或需要帮助的地方吗?😊


    访问LangSmith页面,可以看到Agent的运行状态

    image.png

    LangGraph详细

    image.png

    在初次构建AI应用程序时,建议从最简单的工作流实现开始,结合LangSmith这样的评估工具是能够极大程序上帮助理解调用模型中间过程。而随着构建应用程序的越来越复杂,其中间状态也会变得越来越多。

关键字

上一篇: LangGraph开发-多轮对话问答机器人

下一篇: 没有了