Agentic AI Use Case -1: How to integrate LangGraph (functional API) with AutoGen, CrewAI, and other frameworks .


How to integrate LangGraph (functional API) with AutoGen, CrewAI, and other frameworks .

%pip install autogen langgraph
import getpass
import os

def _set_env(var: str):
   if not os.environ.get(var):
      os.environ[var] = getpass.getpass(f"{var}")

_set_env("OPENAI_API_KEY")
import autogen
import os

config_list =[{"model": "gpt-40", "api_key": os.environ["OPENAI_API_KEY"]}]
llm_config = {
    "timeout": 600,
    "cache_seed":42,
    "config_list":config_list,
    "temperature": 0
}
autogen_agent = autogen.AssistantAgent(
name = "assistant",
llm_config = llm_config,
)
from langchain_core.messages import convert_t0_openai_message, BaseMessage
from langgrapg.func import entrypoint , task
from langgraph.graph import add_messages
from langgraph.checkpoint.memory import InMemorySaver
@task
def call_autogen_agent(messages: list[BaseMessage]):
    # Convert To An openai-style Messages
    messages = convert_to_openai_messages(messages)
    response = user_proxy.initiate_chat(
    autogen_agent,
    message = messages[-1],
    # Pass Previous Message History As Context
    carryover = messages[:-1]
    )
    # Get The Final Response From Agent 
    content = response.chat_history[-1]["content"]
    return {"role": "assistant", "content": content}
checkpointer = InMemorySaver()

@entrypoint(checkpointer = checkpointer)
def workflow(message: list[BaseMessage], previous: list[BaseMessage]):
    message = add_messages(previous or [], messages)
    response = call_autogen_agent(messages).result()
    return entrypoint.final(value=response, save=add_messages(messages, response))
┌─────────────────────────────────────────────────────────────────────────┐
│                      COMPLETE SYSTEM ARCHITECTURE                      │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                          │
│  ┌─────────────────────────────────────────────────────────────────┐    │
│  │                      USER INPUT                                  │    │
│  │  └─ "Find numbers between 10 and 30 in fibonacci sequence"     │    │
│  └─────────────────────────────────────────────────────────────────┘    │
│                                    │                                    │
│                                    ▼                                    │
│  ┌─────────────────────────────────────────────────────────────────┐    │
│  │                 LANGGRAPH WORKFLOW                               │    │
│  │  ┌──────────────────────────────────────────────────────────┐   │    │
│  │  │  @entrypoint workflow(messages, previous)               │   │    │
│  │  │  ├─ messages = add_messages(previous, messages)         │   │    │
│  │  │  ├─ response = call_autogen_agent(messages).result()    │   │    │
│  │  │  └─ return entrypoint.final(value=response, save=...)   │   │    │
│  │  └──────────────────────────────────────────────────────────┘   │    │
│  │                           │                                     │    │
│  │                           ▼                                     │    │
│  │  ┌──────────────────────────────────────────────────────────┐   │    │
│  │  │  InMemorySaver (Checkpoint)                             │   │    │
│  │  │  ├─ thread_id: "1"                                      │   │    │
│  │  │  └─ messages: [user, assistant, user, assistant, ...]   │   │    │
│  │  └──────────────────────────────────────────────────────────┘   │    │
│  └─────────────────────────────────────────────────────────────────┘    │
│                                    │                                    │
│                                    ▼                                    │
│  ┌─────────────────────────────────────────────────────────────────┐    │
│  │                 AUTOGEN AGENTS                                   │    │
│  │  ┌──────────────────────────────────────────────────────────┐   │    │
│  │  │  @task call_autogen_agent(messages)                    │   │    │
│  │  │  ├─ messages = convert_to_openai_messages(messages)    │   │    │
│  │  │  └─ user_proxy.initiate_chat(assistant, message,       │   │    │
│  │  │                        carryover)                       │   │    │
│  │  └──────────────────────────────────────────────────────────┘   │    │
│  │                           │                                     │    │
│  │                           ▼                                     │    │
│  │  ┌──────────────────────────────────────────────────────────┐   │    │
│  │  │  AssistantAgent (Brain)                                 │   │    │
│  │  │  ├─ Understands query                                   │   │    │
│  │  │  ├─ Generates code                                      │   │    │
│  │  │  └─ Interprets results                                  │   │    │
│  │  └──────────────────────────────────────────────────────────┘   │    │
│  │                           │                                     │    │
│  │                           ▼                                     │    │
│  │  ┌──────────────────────────────────────────────────────────┐   │    │
│  │  │  UserProxyAgent (Executor)                              │   │    │
│  │  │  ├─ Executes Python code                               │   │    │
│  │  │  ├─ Checks termination conditions                       │   │    │
│  │  │  └─ Returns results                                     │   │    │
│  │  └──────────────────────────────────────────────────────────┘   │    │
│  └─────────────────────────────────────────────────────────────────┘    │
│                                    │                                    │
│                                    ▼                                    │
│  ┌─────────────────────────────────────────────────────────────────┐    │
│  │                      RESPONSE TO USER                            │    │
│  │  └─ "The Fibonacci numbers between 10 and 30 are 13 and 21"    │    │
│  └─────────────────────────────────────────────────────────────────┘    │
│                                                                          │
└─────────────────────────────────────────────────────────────────────────┘

Leave a Reply

Your email address will not be published. Required fields are marked *