一起学LangGraph构建agent专题---预构建的代理-多智能体(六),大模型入门到精通,收藏这篇就足够了!
一起学LangGraph构建agent专题---预构建的代理-多智能体(六),大模型入门到精通,收藏这篇就足够了!
官方文档:https://langchain-ai.github.io/langgraph/agents/overview/
本文介绍 预构建的代理 的第6个小结,完整代码已经上传到github上;文末自取;
6多智能体
多智能体
参考文档:
https://langchain-ai.github.io/langgraph/agents/multi-agent/
如果单个代理需要专注于多个领域或管理许多工具,则它可能会遇到困难。要解决此问题,您可以将代理分解为更小的独立代理,并将它们组合成一个多代理系统。
在多代理系统中,代理之间需要相互通信。它们通过切换来实现这一点,切换是一种原语,用于描述将控制权移交给哪个代理以及要发送给该代理的有效负载。
两种最流行的多代理架构是:
Supervisor — 各个代理由中央 Supervisor 代理协调。主管控制所有通信流和任务委派,根据当前上下文和任务要求决定调用哪个代理。 Swarm — 代理根据其专长动态地将控制权移交给彼此。系统会记住最后一个处于活动状态的座席,确保在后续交互中,与该座席的对话恢复。
使用 langgraph-supervisor 库创建 supervisor 多智能体系统:
pip install langgraph-supervisor
或者
uv pip install langgraph-supervisor -i https://pypi.tuna.tsinghua.edu.cn/simple/
下面构建了两个智能体:flight_assistant 、hotel_assistant,利用supervisor 进行协调两个智能体;
`import os
from langchain.chat_models import init_chat_model
API_KEY = “sk-123”
BASE_URL = “https://api.deepseek.com”
os.environ[“OPENAI_API_KEY”] = API_KEY
os.environ[“OPENAI_API_BASE”] = BASE_URL
llm = init_chat_model(“openai:deepseek-chat”)
from langchain_openai import ChatOpenAI
from langgraph.prebuilt import create_react_agent
from langgraph_supervisor import create_supervisor
def book_hotel(hotel_name: str):
“”“Book a hotel”“”
returnf"Successfully booked a stay at {hotel_name}."
def book_flight(from_airport: str, to_airport: str):
“”“Book a flight”“”
returnf"Successfully booked a flight from {from_airport} to {to_airport}."
flight_assistant = create_react_agent(
model=llm,
tools=[book_flight],
prompt=“You are a flight booking assistant”,
name=“flight_assistant”
)
hotel_assistant = create_react_agent(
model=llm,
tools=[book_hotel],
prompt=“You are a hotel booking assistant”,
name=“hotel_assistant”
)
supervisor = create_supervisor(
agents=[flight_assistant, hotel_assistant],
model=llm,
prompt=(
“You manage a hotel booking assistant and a”
“flight booking assistant. Assign work to them.”
)
).compile()
for chunk in supervisor.stream(
{
“messages”: [
{
“role”: “user”,
“content”: “book a flight from BOS to JFK and a stay at McKittrick Hotel ,请用中文回答”
}
]
}
):
print(chunk)
print(“\n”)`
{'supervisor': None}
{'hotel_assistant': {'messages': [AIMessage(content='我已经为您转接到酒店预订助手,可以为您预订麦基特里克酒店(McKittrick Hotel)。请问您需要预订的具体日期和入住天数是多少?', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 34, 'prompt_tokens': 156, 'total_tokens': 190, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 64}, 'prompt_cache_hit_tokens': 64, 'prompt_cache_miss_tokens': 92}, 'model_name': 'deepseek-chat', 'system_fingerprint': 'fp_8802369eaa_prod0425fp8', 'id': '23d984a3-00a7-46e5-bfc5-94289331b13c', 'service_tier': None, 'finish_reason': 'stop', 'logprobs': None}, name='hotel_assistant', id='run--0664506c-8c57-4c73-8e90-1dbdda32ca14-0', usage_metadata={'input_tokens': 156, 'output_tokens': 34, 'total_tokens': 190, 'input_token_details': {'cache_read': 64}, 'output_token_details': {}}), AIMessage(content='Transferring back to supervisor', additional_kwargs={}, response_metadata={'__is_handoff_back': True}, name='hotel_assistant', tool_calls=[{'name': 'transfer_back_to_supervisor', 'args': {}, 'id': 'c4c09e5e-2570-4231-b850-9b4b39bc176f', 'type': 'tool_call'}]), ToolMessage(content='Successfully transferred back to supervisor', name='transfer_back_to_supervisor', tool_call_id='c4c09e5e-2570-4231-b850-9b4b39bc176f')]}}
{'flight_assistant': {'messages': [AIMessage(content='我已经为您预订了从波士顿洛根国际机场(BOS)到纽约肯尼迪国际机场(JFK)的航班。关于在麦基特里克酒店(McKittrick Hotel)的住宿,您是否需要我协助预订或提供更多信息?', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 55, 'prompt_tokens': 182, 'total_tokens': 237, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 128}, 'prompt_cache_hit_tokens': 128, 'prompt_cache_miss_tokens': 54}, 'model_name': 'deepseek-chat', 'system_fingerprint': 'fp_8802369eaa_prod0425fp8', 'id': 'e4b2bb09-ff11-4461-bf3f-5f07413c5dac', 'service_tier': None, 'finish_reason': 'stop', 'logprobs': None}, name='flight_assistant', id='run--cc6c209f-148c-4648-8fe8-6c232ecf8957-0', usage_metadata={'input_tokens': 182, 'output_tokens': 55, 'total_tokens': 237, 'input_token_details': {'cache_read': 128}, 'output_token_details': {}}), AIMessage(content='Transferring back to supervisor', additional_kwargs={}, response_metadata={'__is_handoff_back': True}, name='flight_assistant', tool_calls=[{'name': 'transfer_back_to_supervisor', 'args': {}, 'id': '6e144c97-2938-4aa4-a52a-6c0b0df1378a', 'type': 'tool_call'}]), ToolMessage(content='Successfully transferred back to supervisor', name='transfer_back_to_supervisor', tool_call_id='6e144c97-2938-4aa4-a52a-6c0b0df1378a')]}}
{'supervisor': None}
{'hotel_assistant': {'messages': [AIMessage(content='酒店预订助手已接手,将为您处理麦基特里克酒店(McKittrick Hotel)的预订。请提供您的入住日期和天数,以便我们为您安排。', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 37, 'prompt_tokens': 306, 'total_tokens': 343, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 64}, 'prompt_cache_hit_tokens': 64, 'prompt_cache_miss_tokens': 242}, 'model_name': 'deepseek-chat', 'system_fingerprint': 'fp_8802369eaa_prod0425fp8', 'id': '5584e869-777b-4065-a720-7dca6eae646d', 'service_tier': None, 'finish_reason': 'stop', 'logprobs': None}, name='hotel_assistant', id='run--be6c9fd0-3cbb-4e33-bbc2-9eab17629822-0', usage_metadata={'input_tokens': 306, 'output_tokens': 37, 'total_tokens': 343, 'input_token_details': {'cache_read': 64}, 'output_token_details': {}}), AIMessage(content='Transferring back to supervisor', additional_kwargs={}, response_metadata={'__is_handoff_back': True}, name='hotel_assistant', tool_calls=[{'name': 'transfer_back_to_supervisor', 'args': {}, 'id': '07c7feff-a564-4e9f-941b-759d3080ccb4', 'type': 'tool_call'}]), ToolMessage(content='Successfully transferred back to supervisor', name='transfer_back_to_supervisor', tool_call_id='07c7feff-a564-4e9f-941b-759d3080ccb4')]}}
{'flight_assistant': {'messages': [AIMessage(content='目前我无法直接转接到酒店预订助手,但我可以为您提供航班预订服务。关于麦基特里克酒店(McKittrick Hotel)的住宿,建议您直接联系酒店或通过其他平台进行预订。 \n\n如果您需要进一步帮助,请告诉我!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 55, 'prompt_tokens': 377, 'total_tokens': 432, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 320}, 'prompt_cache_hit_tokens': 320, 'prompt_cache_miss_tokens': 57}, 'model_name': 'deepseek-chat', 'system_fingerprint': 'fp_8802369eaa_prod0425fp8', 'id': '1740ca97-e2d8-451b-9df9-657720cc4bb6', 'service_tier': None, 'finish_reason': 'stop', 'logprobs': None}, name='flight_assistant', id='run--b5e2c5db-f7cb-4627-a559-1b7c32ff5f7d-0', usage_metadata={'input_tokens': 377, 'output_tokens': 55, 'total_tokens': 432, 'input_token_details': {'cache_read': 320}, 'output_token_details': {}}), AIMessage(content='Transferring back to supervisor', additional_kwargs={}, response_metadata={'__is_handoff_back': True}, name='flight_assistant', tool_calls=[{'name': 'transfer_back_to_supervisor', 'args': {}, 'id': '5979489b-37e3-4d67-967b-69fcdc0e3f1b', 'type': 'tool_call'}]), ToolMessage(content='Successfully transferred back to supervisor', name='transfer_back_to_supervisor', tool_call_id='5979489b-37e3-4d67-967b-69fcdc0e3f1b')]}}
{'supervisor': {'messages': [HumanMessage(content='book a flight from BOS to JFK and a stay at McKittrick Hotel ,请用中文回答', additional_kwargs={}, response_metadata={}, id='79e98ed8-3d09-4cf3-9051-62645a0af701'), AIMessage(content='我已经为您预订了从波士顿洛根国际机场(BOS)到纽约肯尼迪国际机场(JFK)的航班。关于在麦基特里克酒店(McKittrick Hotel)的住宿,您是否需要我协助预订或提供更多信息?', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 55, 'prompt_tokens': 182, 'total_tokens': 237, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 128}, 'prompt_cache_hit_tokens': 128, 'prompt_cache_miss_tokens': 54}, 'model_name': 'deepseek-chat', 'system_fingerprint': 'fp_8802369eaa_prod0425fp8', 'id': 'e4b2bb09-ff11-4461-bf3f-5f07413c5dac', 'service_tier': None, 'finish_reason': 'stop', 'logprobs': None}, name='flight_assistant', id='run--cc6c209f-148c-4648-8fe8-6c232ecf8957-0', usage_metadata={'input_tokens': 182, 'output_tokens': 55, 'total_tokens': 237, 'input_token_details': {'cache_read': 128}, 'output_token_details': {}}), AIMessage(content='Transferring back to supervisor', additional_kwargs={}, response_metadata={'__is_handoff_back': True}, name='flight_assistant', id='2ae9dab8-3642-4609-b320-030dd75d52ca', tool_calls=[{'name': 'transfer_back_to_supervisor', 'args': {}, 'id': '6e144c97-2938-4aa4-a52a-6c0b0df1378a', 'type': 'tool_call'}]), ToolMessage(content='Successfully transferred back to supervisor', name='transfer_back_to_supervisor', id='ab645131-bb32-41fe-b915-eef61e4bc4eb', tool_call_id='6e144c97-2938-4aa4-a52a-6c0b0df1378a'), AIMessage(content='我已经为您转接到酒店预订助手,可以为您预订麦基特里克酒店(McKittrick Hotel)。请问您需要预订的具体日期和入住天数是多少?', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 34, 'prompt_tokens': 156, 'total_tokens': 190, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 64}, 'prompt_cache_hit_tokens': 64, 'prompt_cache_miss_tokens': 92}, 'model_name': 'deepseek-chat', 'system_fingerprint': 'fp_8802369eaa_prod0425fp8', 'id': '23d984a3-00a7-46e5-bfc5-94289331b13c', 'service_tier': None, 'finish_reason': 'stop', 'logprobs': None}, name='hotel_assistant', id='run--0664506c-8c57-4c73-8e90-1dbdda32ca14-0', usage_metadata={'input_tokens': 156, 'output_tokens': 34, 'total_tokens': 190, 'input_token_details': {'cache_read': 64}, 'output_token_details': {}}), AIMessage(content='Transferring back to supervisor', additional_kwargs={}, response_metadata={'__is_handoff_back': True}, name='hotel_assistant', id='e091eaa4-1abe-4537-8c6b-0628fa600a10', tool_calls=[{'name': 'transfer_back_to_supervisor', 'args': {}, 'id': 'c4c09e5e-2570-4231-b850-9b4b39bc176f', 'type': 'tool_call'}]), ToolMessage(content='Successfully transferred back to supervisor', name='transfer_back_to_supervisor', id='29f2ed1e-0629-4d4f-b42c-65e0202425bc', tool_call_id='c4c09e5e-2570-4231-b850-9b4b39bc176f'), AIMessage(content='目前我无法直接转接到酒店预订助手,但我可以为您提供航班预订服务。关于麦基特里克酒店(McKittrick Hotel)的住宿,建议您直接联系酒店或通过其他平台进行预订。 \n\n如果您需要进一步帮助,请告诉我!', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 55, 'prompt_tokens': 377, 'total_tokens': 432, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 320}, 'prompt_cache_hit_tokens': 320, 'prompt_cache_miss_tokens': 57}, 'model_name': 'deepseek-chat', 'system_fingerprint': 'fp_8802369eaa_prod0425fp8', 'id': '1740ca97-e2d8-451b-9df9-657720cc4bb6', 'service_tier': None, 'finish_reason': 'stop', 'logprobs': None}, name='flight_assistant', id='run--b5e2c5db-f7cb-4627-a559-1b7c32ff5f7d-0', usage_metadata={'input_tokens': 377, 'output_tokens': 55, 'total_tokens': 432, 'input_token_details': {'cache_read': 320}, 'output_token_details': {}}), AIMessage(content='Transferring back to supervisor', additional_kwargs={}, response_metadata={'__is_handoff_back': True}, name='flight_assistant', id='a2b821a5-4fdf-4fcd-8b6d-d6f635d062a5', tool_calls=[{'name': 'transfer_back_to_supervisor', 'args': {}, 'id': '5979489b-37e3-4d67-967b-69fcdc0e3f1b', 'type': 'tool_call'}]), ToolMessage(content='Successfully transferred back to supervisor', name='transfer_back_to_supervisor', id='4d7c4e27-fa89-43a6-93cb-917fbf4c82c9', tool_call_id='5979489b-37e3-4d67-967b-69fcdc0e3f1b'), AIMessage(content='酒店预订助手已接手,将为您处理麦基特里克酒店(McKittrick Hotel)的预订。请提供您的入住日期和天数,以便我们为您安排。', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 37, 'prompt_tokens': 306, 'total_tokens': 343, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 64}, 'prompt_cache_hit_tokens': 64, 'prompt_cache_miss_tokens': 242}, 'model_name': 'deepseek-chat', 'system_fingerprint': 'fp_8802369eaa_prod0425fp8', 'id': '5584e869-777b-4065-a720-7dca6eae646d', 'service_tier': None, 'finish_reason': 'stop', 'logprobs': None}, name='hotel_assistant', id='run--be6c9fd0-3cbb-4e33-bbc2-9eab17629822-0', usage_metadata={'input_tokens': 306, 'output_tokens': 37, 'total_tokens': 343, 'input_token_details': {'cache_read': 64}, 'output_token_details': {}}), AIMessage(content='Transferring back to supervisor', additional_kwargs={}, response_metadata={'__is_handoff_back': True}, name='hotel_assistant', id='405af2a8-621d-4f66-9b4a-81fd302342d5', tool_calls=[{'name': 'transfer_back_to_supervisor', 'args': {}, 'id': '07c7feff-a564-4e9f-941b-759d3080ccb4', 'type': 'tool_call'}]), ToolMessage(content='Successfully transferred back to supervisor', name='transfer_back_to_supervisor', id='51fafbd6-fa7f-40e5-980d-958dad50e10b', tool_call_id='07c7feff-a564-4e9f-941b-759d3080ccb4'), AIMessage(content='酒店预订助手已准备好为您预订麦基特里克酒店(McKittrick Hotel)。请提供以下信息以便完成预订: \n\n1. **入住日期** \n2. **退房日期** \n3. **房型偏好**(如标准间、豪华间等) \n4. **其他特殊需求**(如早餐、无烟房等) \n\n请告知以上信息,我将为您安排! \n\nTransferring back to supervisor\n', additional_kwargs={'refusal': None}, response_metadata={'token_usage': {'completion_tokens': 192, 'prompt_tokens': 425, 'total_tokens': 617, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 256}, 'prompt_cache_hit_tokens': 256, 'prompt_cache_miss_tokens': 169}, 'model_name': 'deepseek-chat', 'system_fingerprint': 'fp_8802369eaa_prod0425fp8', 'id': '82642e5b-ea08-4834-b27c-7863a9eae6d8', 'service_tier': None, 'finish_reason': 'stop', 'logprobs': None}, name='supervisor', id='run--2b12d2b9-8f21-496b-9ff4-402184f7b49d-0', usage_metadata={'input_tokens': 425, 'output_tokens': 192, 'total_tokens': 617, 'input_token_details': {'cache_read': 256}, 'output_token_details': {}})]}}
完整代码访问github地址:
https://github.com/aixiaoxin123/langgraph_project
大模型算是目前当之无愧最火的一个方向了,算是新时代的风口!有小伙伴觉得,作为新领域、新方向
人才需求必然相当大,与之相应的人才缺乏、人才竞争自然也会更少,那转行去做大模型是不是一个更好的选择呢?是不是更好就业
呢?是不是就暂时能抵抗35岁中年危机呢?
答案当然是这样,大模型必然是新风口!
那如何学习大模型 ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。但是具体到个人,只能说是:
最先掌握AI的人,将会比较晚掌握AI的人有竞争优势。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
但现在很多想入行大模型的人苦于现在网上的大模型老课程老教材
,学也不是不学也不是,基于此我用做产品的心态来打磨这份大模型教程
,深挖痛点并持续修改了近100余次
后,终于把整个AI大模型的学习路线完善出来!
在这个版本当中:
您只需要听我讲,跟着我做即可,为了让学习的道路变得更简单,这份大模型路线+学习教程已经给大家整理并打包分享出来
, 😝有需要的小伙伴,可以 扫描下方二维码领取
🆓↓↓↓
一、大模型经典书籍(免费分享)
AI大模型已经成为了当今科技领域的一大热点,那以下这些大模型书籍就是非常不错的学习资源。
二、640套大模型报告(免费分享)
这套包含640份报告的合集,涵盖了大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(几乎涵盖所有行业)
三、大模型系列视频教程(免费分享)
四、2025最新大模型学习路线(免费分享)
我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。
L1阶段:启航篇丨极速破界AI新时代
L1阶段:了解大模型的基础知识,以及大模型在各个行业的应用和分析,学习理解大模型的核心原理、关键技术以及大模型应用场景。
L2阶段:攻坚篇丨RAG开发实战工坊
L2阶段:AI大模型RAG应用开发工程,主要学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。
L3阶段:跃迁篇丨Agent智能体架构设计
L3阶段:大模型Agent应用架构进阶实现,主要学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造Agent智能体。
L4阶段:精进篇丨模型微调与私有化部署
L4阶段:大模型的微调和私有化部署,更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调,并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。
L5阶段:专题集丨特训篇 【录播课】
全套的AI大模型学习资源
已经整理打包,有需要的小伙伴可以微信扫描下方二维码
,免费领取
更多推荐
所有评论(0)