langgraph框架之初识
1.什么是langgraph?
LangGraph 是一个用于构建可控代理的底层编排框架。在AI中,代理也就是执行动作的智能体,也就是agent。使用这个框架可以构建一个可以自由控制的智能执行体,它可以帮我们做许多事情,如下:
-
自然语言处理(NLP):
- 机器翻译:将一种语言的文本翻译成另一种语言。
- 情感分析:分析文本中的情感倾向,如正面、负面或中性。
- 文本生成:自动生成新闻文章、报告或故事。
-
对话系统:
- 聊天机器人:用于客服、导览或个人助手,提供自动化的对话服务。
- 虚拟助手:如Siri、Alexa,帮助用户完成任务,如设置提醒、搜索信息。
-
内容推荐:
- 个性化推荐:根据用户的历史行为和偏好,推荐新闻、电影或产品。
- 智能广告:根据用户上下文提供个性化的广告内容。
-
语言学习:
- 语言教学辅助:提供语法纠正、词汇练习和模拟对话,帮助用户学习新语言。
- 智能 dictionaries:提供实时翻译和语言学习资源。
-
数据处理与分析:
- 文本提取:从非结构化文本中提取关键信息,如新闻摘要、报告生成。
- 数据清洗:自动识别和纠正文本数据中的错误和不一致。
-
智能文档管理:
- 文档分类:自动对文档进行分类和标签化。
- 内容提取:从大量文档中提取特定信息,如合同条款、技术规格。
-
社交媒体管理:
- 内容监控:实时监控社交媒体上的特定话题或关键词。
- 社区管理:自动识别和处理垃圾信息或不当内容。
-
医疗健康:
- 电子病历分析:从电子病历中提取关键信息,辅助医生决策。
- 健康咨询:提供基于语言的健康咨询和建议。
2.为什么要使用 LangGraph?
LangGraph 专为希望构建强大且适应性强的 AI 代理的开发者打造。开发者选择 LangGraph 的理由如下:
- 可靠性和可控性。通过审核检查和人工审核来引导代理操作。LangGraph 会保留长期运行工作流的上下文,确保您的代理保持正轨。LangGraph 通过持久化检查点
checkpointer加载已保存的状态,从而允许聊天机器人从上次中断的地方继续执行。请看以下代码呈现:
-
from langgraph.checkpoint.memory import MemorySaver from langgraph.graph import StateGraph# 定义一个新的graph workflow = StateGraph(State)# 初始化内存以在graph运行之间保持状态 memory = MemorySaver()app = workflow.compile(checkpointer=memory)# 创建用户角色 config = {"configurable": {"thread_id": 86}}# 用户首次输入 user_input = "Hi there! My name is Will."# 第一次运行thread_id为86的角色 events = app.stream({"messages": [("user", user_input)]}, config, stream_mode="values" )# 再次运行thread_id为86的角色,提问有没有记住用户的名字 user_input = "Remember my name?Please spell my name"for event in events:event["messages"][-1].pretty_print()events = app.stream({"messages": [("user", user_input)]}, config, stream_mode="values" )for event in events:event["messages"][-1].pretty_print()
运行结果如下:
================================ Human Message =================================Hi there! My name is Will. ================================== Ai Message ==================================Hello Will! How can I assist you today? ================================ Human Message =================================Remember my name?Please spell my name ================================== Ai Message ==================================Of course, Will! Your name is W-I-L-L.
- 低级且可扩展。使用完全描述性的低级原语构建自定义代理,摆脱限制定制的僵化抽象。设计可扩展的多代理系统,每个代理都根据您的用例定制特定的角色。一般来说在编排代理流程时,需要创建各个节点,有工具节点,有代理节点,比如某个用例可以把工具节点命名为“tools”,把代理节点命名为“agent”。
- 一流的流式传输支持。通过逐个令牌的流式传输和中间步骤的流式传输,LangGraph 让用户能够清晰地实时了解代理的推理和操作。这个特点可以提升用户感知,让对话更友好的呈现,增强沟通效果,提升服务体验。
def stream_graph_updates(u_input: str):"""流式输出用户的提问:param u_input: 用户输入:return:"""for event in app.stream({"messages": [{"role": "user", "content": u_input}]}, config):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:# fallback if input() is not availableuser_input = "What do you know about LangGraph?"print("User: " + user_input)stream_graph_updates(user_input)break
User: 你好,什么是langgraph? Assistant: Langgraph是一种用于表示和分析语言结构的图形化工具。它通过节点和边来表示语言中的不同元素及其关系,例如词法、句法和语义等。Langgraph可以帮助语言学家、开发者和教育者更好地理解和教授语言的复杂性。如果你有具体的问题或需要进一步的信息,请告诉我! User: 好,它可以应用于哪些领域?请简短说一下 Assistant: Langgraph可以应用于多个领域,包括但不限于自然语言处理、语言教学、文本分析和机器翻译等。它帮助研究人员和开发者更好地理解语言结构,并应用于实际的语言技术开发中。 User: 真棒 Assistant: 谢谢您的认可!如果您还有其他问题或需要帮助的地方,随时欢迎提问。 User: quit Goodbye!
3.安装
-
pip install -U langgraph
在命令行使用pip下载,也可以进入官网下载安装包后安装到指定的环境路径
4.知名客户
- Klarna:为 8500 万活跃用户提供客户支持机器人
- Elastic:用于威胁检测的安全 AI 助手
- Uber:自动化单元测试生成
- Replit:代码生成