langgraph swarm agent
https://github.com/bekingcn/langgraph_swarm
The LangGraph Swarm is a alternative implementation to the OpenAI's Swarm framework with langchain and langgraph.
Coming soon... with full configuration implementation in LcStack
Why LangGraph Swarm?
LangGraph Swarm reimplements the Swarm framework with langchain and langgraph. With LangGraph Swarm, you can create agents and integrate them with Langchain components. If you already have a langchain agent, you can benefit from Swarm's features without having to re-invent the wheel.
import datetime from collections import defaultdict from typing import Callable from langchain_core.runnables import RunnableConfig from langchain_openai import ChatOpenAI from langgraph.prebuilt import create_react_agent from langgraph_swarm import create_handoff_tool, create_swarm model = ChatOpenAI(model="gpt-4o") # Mock data for tools RESERVATIONS = defaultdict(lambda: {"flight_info": {}, "hotel_info": {}}) TOMORROW = (datetime.date.today() + datetime.timedelta(days=1)).isoformat() FLIGHTS = [ { "departure_airport": "BOS", "arrival_airport": "JFK", "airline": "Jet Blue", "date": TOMORROW, "id": "1", } ] HOTELS = [ { "location": "New York", "name": "McKittrick Hotel", "neighborhood": "Chelsea", "id": "1", } ] # Flight tools def search_flights( departure_airport: str, arrival_airport: str, date: str, ) -> list[dict]: """Search flights. Args: departure_airport: 3-letter airport code for the departure airport. If unsure, use the biggest airport in the area arrival_airport: 3-letter airport code for the arrival airport. If unsure, use the biggest airport in the area date: YYYY-MM-DD date """ # return all flights for simplicity return FLIGHTS def book_flight( flight_id: str, config: RunnableConfig, ) -> str: """Book a flight.""" user_id = config["configurable"].get("user_id") flight = [flight for flight in FLIGHTS if flight["id"] == flight_id][0] RESERVATIONS[user_id]["flight_info"] = flight return "Successfully booked flight" # Hotel tools def search_hotels(location: str) -> list[dict]: """Search hotels. Args: location: offical, legal city name (proper noun) """ # return all hotels for simplicity return HOTELS def book_hotel( hotel_id: str, config: RunnableConfig, ) -> str: """Book a hotel""" user_id = config["configurable"].get("user_id") hotel = [hotel for hotel in HOTELS if hotel["id"] == hotel_id][0] RESERVATIONS[user_id]["hotel_info"] = hotel return "Successfully booked hotel" # Define handoff tools transfer_to_hotel_assistant = create_handoff_tool( agent_name="hotel_assistant", description="Transfer user to the hotel-booking assistant that can search for and book hotels.", ) transfer_to_flight_assistant = create_handoff_tool( agent_name="flight_assistant", description="Transfer user to the flight-booking assistant that can search for and book flights.", ) # Define agent prompt def make_prompt(base_system_prompt: str) -> Callable[[dict, RunnableConfig], list]: def prompt(state: dict, config: RunnableConfig) -> list: user_id = config["configurable"].get("user_id") current_reservation = RESERVATIONS[user_id] system_prompt = ( base_system_prompt + f"\n\nUser's active reservation: {current_reservation}" + f"Today is: {datetime.datetime.now()}" ) return [{"role": "system", "content": system_prompt}] + state["messages"] return prompt # Define agents flight_assistant = create_react_agent( model, [search_flights, book_flight, transfer_to_hotel_assistant], prompt=make_prompt("You are a flight booking assistant"), name="flight_assistant", ) hotel_assistant = create_react_agent( model, [search_hotels, book_hotel, transfer_to_flight_assistant], prompt=make_prompt("You are a hotel booking assistant"), name="hotel_assistant", ) # Compile and run! builder = create_swarm( [flight_assistant, hotel_assistant], default_active_agent="flight_assistant" ) app = builder.compile()
from langchain.chat_models import init_chat_model from langgraph.prebuilt import create_react_agent from langgraph_swarm import create_handoff_tool, create_swarm # from swarm_researcher.configuration import Configuration from swarm_researcher.prompts import planner_prompt, researcher_prompt from swarm_researcher.utils import fetch_doc # LLM model = init_chat_model(model="gpt-4o", model_provider="openai") # Handoff tools transfer_to_planner_agent = create_handoff_tool( agent_name="planner_agent", description="Transfer the user to the planner_agent for clarifying questions related to the user's request.", ) transfer_to_researcher_agent = create_handoff_tool( agent_name="researcher_agent", description="Transfer the user to the researcher_agent to perform research and implement the solution to the user's request.", ) # LLMS.txt llms_txt = "LangGraph:https://langchain-ai.github.io/langgraph/llms.txt" num_urls = 3 planner_prompt_formatted = planner_prompt.format(llms_txt=llms_txt, num_urls=num_urls) # Planner agent planner_agent = create_react_agent( model, prompt=planner_prompt_formatted, tools=[fetch_doc, transfer_to_researcher_agent], name="planner_agent", ) # Researcher agent researcher_agent = create_react_agent( model, prompt=researcher_prompt, tools=[fetch_doc, transfer_to_planner_agent], name="researcher_agent", ) # Swarm agent_swarm = create_swarm( [planner_agent, researcher_agent], default_active_agent="planner_agent" ) app = agent_swarm.compile()
https://zhuanlan.zhihu.com/p/18555531485
https://zhuanlan.zhihu.com/p/25617183612
出处:http://www.cnblogs.com/lightsong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。