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