Una implementación de codificación con Arcad: Integración de herramientas API de desarrollador de Gemini en agentes de Langgraph para flujos de trabajo de IA autónomos

Arcada Transforma sus agentes Langgraph de interfaces de conversación estática en asistentes dinámicos e impulsados ​​por la acción al proporcionar un rico conjunto de herramientas preparadas, incluidos el raspado y la búsqueda web, así como las API especializadas para finanzas, mapas y más. En este tutorial, aprenderemos cómo inicializar ArcadetoolManager, obtener herramientas individuales (como Web.Scrapeurl) o los kits de herramientas completos, e integrarlas sin problemas en el modelo de chat de API de desarrollador Gemini de Google a través del chatgooglegenerativei de Langchain. Con algunos pasos, instalamos dependencias, cargamos de forma segura sus claves API, recuperamos e inspeccionamos sus herramientas, configuramos el modelo Gemini y giramos un agente de estilo React completo con memoria de control. En todo momento, la interfaz intuitiva de Python de Arcade mantuvo su código conciso y su enfoque directamente en la elaboración de flujos de trabajo poderosos del mundo real, no se requieren llamadas HTTP de bajo nivel o un análisis manual.

!pip install langchain langchain-arcade langchain-google-genai langgraph

Integramos todas las bibliotecas centrales que necesita, incluida la funcionalidad central de Langchain, la integración de arcade para obtener y administrar herramientas externas, el conector de Google Genai para Gemini Access a través de la tecla API y el marco de orquestación de Langgraph, para que pueda ponerse en funcionamiento de una vez.

from getpass import getpass
import os


if "GOOGLE_API_KEY" not in os.environ:
    os.environ["GOOGLE_API_KEY"] = getpass("Gemini API Key: ")


if "ARCADE_API_KEY" not in os.environ:
    os.environ["ARCADE_API_KEY"] = getpass("Arcade API Key: ")

Le avisamos de forma segura por sus teclas API Gemini y Arcade, sin mostrarlas en la pantalla. Los establece como variables de entorno, solo preguntando si aún no están definidos, para mantener sus credenciales fuera de su código de cuaderno.

from langchain_arcade import ArcadeToolManager


manager = ArcadeToolManager(api_key=os.environ["ARCADE_API_KEY"])
tools = manager.get_tools(tools=["Web.ScrapeUrl"], toolkits=["Google"])
print("Loaded tools:", [t.name for t in tools])

Inicializamos el ArcadetoLManager con su clave API, luego obtenemos la herramienta Web.Scrapeurl y el Kit de herramientas de Google completo. Finalmente imprime los nombres de las herramientas cargadas, lo que le permite confirmar qué capacidades ahora están disponibles para su agente.

from langchain_google_genai import ChatGoogleGenerativeAI
from langgraph.checkpoint.memory import MemorySaver


model = ChatGoogleGenerativeAI(
    model="gemini-1.5-flash",  
    temperature=0,
    max_tokens=None,
    timeout=None,
    max_retries=2,
)


bound_model = model.bind_tools(tools)


memory = MemorySaver()

Inicializamos el modelo de chat de la API de desarrollador de Gemini (Gemini-1.5-Flash) con temperatura cero para respuestas deterministas, se une en sus herramientas de arcade para que el agente pueda llamarlos durante su razonamiento y configurar un MemorySaver para persistir en el punto de control del estado del agente por punto de control.

from langgraph.prebuilt import create_react_agent


graph = create_react_agent(
    model=bound_model,
    tools=tools,
    checkpointer=memory
)

Giramos un agente de Langgraph de estilo react que delega su modelo Gemini encuadres, las herramientas arcade obtenidas y el Instituto de control de MemorySaver, lo que permite a su agente iterar a través del pensamiento, la invocación de herramientas y la reflexión con el estado persistido en las llamadas.

from langgraph.errors import NodeInterrupt


config = {
    "configurable": {
        "thread_id": "1",
        "user_id": "user@example.com"
    }
}
user_input = {
    "messages": [
        ("user", "List any new and important emails in my inbox.")
    ]
}


try:
    for chunk in graph.stream(user_input, config, stream_mode="values"):
        chunk["messages"][-1].pretty_print()
except NodeInterrupt as exc:
    print(f"\n🔒 NodeInterrupt: {exc}")
    print("Please update your tool authorization or adjust your request, then re-run.")

Configuramos la configuración de su agente (ID de subproceso y ID de usuario) y la solicitud de usuario, luego transmitimos las respuestas del agente React, imprimiendo bastante cada fragmento a medida que llega. Si una llamada de herramienta llega a un guardia de autorización, atrapa el nodo de Interrupción y le dice que actualice sus credenciales o ajuste la solicitud antes de volver a intentarlo.

En conclusión, al centrar nuestra arquitectura de agente en Arcade, obtenemos acceso instantáneo a un ecosistema de capacidades externas enchufar y jugar que de otro modo tomarían días construirse desde cero. El patrón Bind_Tools fusiona el conjunto de herramientas de Arcade con el razonamiento de lenguaje natural de Gemini, mientras que el marco React de Langgraph orquesta la invocación de la herramienta en respuesta a las consultas de los usuarios. Ya sea que esté arrastrando los sitios web para datos en tiempo real, automatizar las búsquedas de rutina o incrustar API específicas de dominio, escamas arcade con sus ambiciones, permitiéndole intercambiar nuevas herramientas o kits de herramientas a medida que evolucionan sus casos de uso.


Aquí está el Cuaderno de colab. Además, no olvides seguirnos Gorjeo y únete a nuestro Canal de telegrama y LinkedIn GRsalpicar. No olvides unirte a nuestro 90k+ ml de subreddit.

🔥 [Register Now] Conferencia virtual de Minicon sobre AI agente: registro gratuito + Certificado de asistencia + Evento corto de 4 horas (21 de mayo, 9 am- 1 pm PST) + Hands on Workshop


Asif Razzaq es el CEO de MarktechPost Media Inc .. Como empresario e ingeniero visionario, ASIF se compromete a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, MarktechPost, que se destaca por su cobertura profunda de noticias de aprendizaje automático y de aprendizaje profundo que es técnicamente sólido y fácilmente comprensible por una audiencia amplia. La plataforma cuenta con más de 2 millones de vistas mensuales, ilustrando su popularidad entre el público.