LangGraph 是著名的大模型开发框架 LangChain 推出的用于构建基于复杂工作流的 LLM 应用的开发库。LangGraph 把任务的节点与关系用 Graph 结构来定义,以支持更多样、更复杂的应用场景,特别是:
- 实现包含循环、迭代等复杂工作流的高级 RAG 范式。
- 需要更灵活控制的 Agent 应用,如指定 Tool、增加人机交互等。
- 多智能体系统(Multi-Agent System)的构建。
本文分享一个如何使用 LangGraph 构建一个创作电影场景与脚本的多智能体应用。
关于多智能体系统
AI 智能体是一个基于大模型的具备自我感知、规划与行动能力的 AI 应用。而多智能体系统(MAS)顾名思义就是由多个 AI 智能体构成,通过相互关联与协作共同完成任务的智能体系统。
MAS 可以是每个智能体有自己独立的 LLM、提示词、Tools 或者其他自定义代码,用来与其他智能体协作;也可以是一个 LLM 在不同的提示下扮演不同的角色。例如在一个电影虚拟世界中,同一个 LLM 根据提示扮演不同的虚拟人物。
电影创作的多智能体应用目标
在这个应用中,我们的目标是实现一个能够自动创建电影场景、并能够代入场景中的多个角色,模拟对话生成台词脚本,最后输出剧本的 LangGraph 应用。在这个应用中,需要 AI 完成的任务是:
- 场景创建:让 AI 根据简单输入创建一个电影场景与若干角色。
- 角色模拟与创作:AI 模拟场景中的不同角色进行脚本创作,推动情节发展。
设计如下 Graph 图来表示这个应用的工作流:
- create_scene:用 AI 创作一个简单电影场景与若干角色。
- select_speaker:AI 根据情节发展选择与切换人物角色,除非故事结束。
- handle_dialogue:AI 模拟选择的人物角色,根据情节发展进行多轮对话。
- write:完成后将会把整个电影场景与对话脚本输出成文件。
这里的多智能体体现在 AI 会根据提示扮演不同的角色,并根据情节发展做自主对话。其中角色的切换和扮演由 select_speaker 与 handle_dialogue 循环进行,直到满足结束条件(故事结束或者到达最大对话次数)。
环境配置与依赖
在开始编码之前,请确保已安装必要的 Python 库。建议创建一个虚拟环境以避免依赖冲突。
pip install langgraph langchain langchain-community langchain-openai python-docx ollama
此外,你需要本地运行 Ollama 服务并加载相应的模型,例如 qwen2 中文模型:
ollama pull qwen2
ollama run qwen2
核心代码实现
1. 导入依赖与模型调用
首先实现一个 LLM 调用方法。这里我们使用本地的 Ollama 加载 qwen2 中文模型,同时也预留了 OpenAI 接口的调用方式以便扩展。
from typing import Dict, TypedDict, Optional
from langgraph.graph import StateGraph, END
from langchain.output_parsers import CommaSeparatedListOutputParser
from langchain_community.llms import Ollama
from langchain_openai ChatOpenAI
docx Document
llm_qwen = Ollama(model=)
llm_openai = ChatOpenAI(model=)
():
:
response = llm_qwen.invoke(x)
response
Exception e:
()


