Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Hazlo como yo lo hice: creando un agente orquestador

from langchain_classic.agents import AgentExecutor
from orquestador import AgenteOrquestador

def main():
agente = AgenteOrquestador()
ejecutor = AgentExecutor(
agent= agente.agente,
tools = agente.tools,
verbose=True
)

pregunta = "Quiero que me expliques como funcionan los desvios condicionales"

respuesta = ejecutor.invoke({"input": pregunta})

print(respuesta)

if name == "main":
main()

from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_cohere import ChatCohere
from my_models import GEMINI_FLASH
from my_keys import GEMINI_API_KEY, COHERE_API_KEY
from langchain_core.globals import set_debug
from langchain_classic.agents import create_react_agent, Tool
from herramienta_analisis_imagen import HerramientaAnalisisImagen
from langsmith import Client
from herramienta_explicar import HerramientaExplicar

set_debug(False)
client = Client()

class AgenteOrquestador:
    def __init__(self):
        self.llm = ChatGoogleGenerativeAI(
            api_key = GEMINI_API_KEY,
            model = GEMINI_FLASH
        )

        herramienta_analisis_imagen = HerramientaAnalisisImagen()

        herramienta_explicar = HerramientaExplicar()

        self.tools = [
            Tool(
                name = herramienta_analisis_imagen.name,
                func = herramienta_analisis_imagen.run,
                description = herramienta_analisis_imagen.description,
                return_direct = herramienta_analisis_imagen.return_direct
            ),
            Tool(
                name = herramienta_explicar.name,
                func = herramienta_explicar.run,
                description = herramienta_explicar.description,
                return_direct = herramienta_explicar.return_direct
            )
        ]

        prompt = client.pull_prompt("hwchase17/react", dangerously_pull_public_prompt=True)

        self.agente = create_react_agent(self.llm, self.tools, prompt)
``` herramientas 
from langchain.tools import BaseTool
from langchain_cohere import ChatCohere
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
from my_keys import COHERE_API_KEY
import ast

class HerramientaExplicar(BaseTool):
    name:str = "HerramientaExplicar"
    description:str = """
                        Utiliza esta herramiento siempre que sea solicita la explicacion de un contenido a las personas.

                        # ENTRADA REQUERIDA
                        - 'tema' (str) : Tema principal informado en la pregunta del usuario.
                        """
    return_direct:bool = True

    def _run(self,accion):
        accion = ast.literal_eval(accion)
        tema_parametro = accion.get("tema", "")
        llm = ChatCohere(cohere_api_key=COHERE_API_KEY)

        template_respuesta = PromptTemplate(
                                        template="""
                                                Asuma el papel de un profeso con aspectos de didactica del usuario. 

                                                1. Elabora una explicación sobre el tema {tema} que sea de facil compresion para estudiantes de secundaria.
                                                2. Utiliza ejemplos cotidianos para volver la explicación mas sencilla.
                                                3. En caso de que surja algun recurso para apoyar la explicación, recuerda el escenario del contexto colombiano.
                                                4. En caso que presentes algún script de codigo, se didactico y utiliza Python.

                                                tema pregunta: {tema}
                                                """,
                                        input_variables=["tema"]
        )

        cadena = template_respuesta | llm | StrOutputParser()

        respuesta = cadena.invoke({"tema" : tema_parametro})

        return respuesta
1 respuesta

¡Hola Estudiante, espero que estés bien!

Parece que estás intentando crear un agente orquestador utilizando LangChain y tienes un ejemplo de código que estás tratando de ejecutar. Vamos a revisar tu código y ver cómo podemos asegurarnos de que todo funcione correctamente.

  1. Revisar las dependencias: Asegúrate de que tienes todas las bibliotecas necesarias instaladas. Esto incluye langchain, langchain_google_genai, y cualquier otra biblioteca mencionada en tu código (como langchain_cohere).

  2. Configuración de las herramientas: En tu clase AgenteOrquestador, ya has inicializado las herramientas HerramientaAnalisisImagen y HerramientaExplicar. Asegúrate de que estas clases estén correctamente definidas y que sus métodos run estén implementados adecuadamente.

  3. Creación del agente: Estás utilizando create_react_agent para crear el agente. Asegúrate de que el prompt que estás utilizando se haya descargado correctamente con client.pull_prompt.

  4. Ejecución del agente: En tu función main(), estás utilizando AgentExecutor para ejecutar el agente con una pregunta específica. Asegúrate de que el método invoke esté correctamente implementado y que el formato de entrada sea el esperado por tus herramientas.

  5. Depuración: Si encuentras errores al ejecutar el código, verifica los mensajes de error para identificar qué parte del código podría estar fallando. A veces, los errores pueden provenir de claves de API incorrectas o problemas de configuración con las herramientas.

Un ejemplo práctico sería asegurarte de que las claves de API (GEMINI_API_KEY y COHERE_API_KEY) estén correctamente configuradas y accesibles en tu entorno.

Espero que estos consejos te ayuden a resolver cualquier problema que estés enfrentando. ¡Espero haber ayudado y buenos estudios!