Cree agentes LLM más rápido con Datapizza AI

Las organizaciones invierten cada vez más en IA a medida que estas nuevas herramientas se adoptan cada vez más en las operaciones diarias. Esta ola continua de innovación está alimentando la demanda de marcos más eficientes y confiables. Siguiendo esta tendencia, Datapizza (la startup detrás de la comunidad tecnológica de Italia) acaba de lanzar un marco de código abierto para GenAI con Python, llamado Datapizza AI.

Al crear agentes con tecnología LLM, debe elegir una pila de IA:

Modelo de lenguaje: el cerebro del agente. La primera gran opción es el código abierto (es decir, Llama, DeepSeek, Phi) frente al pago (es decir, ChatGPT, Claude, Gemini). Luego, según el caso de uso, es necesario considerar el conocimiento del LLM: genérico (sabe un poco de todo, como Wikipedia) frente a un tema específico (es decir, ajustado para codificación o finanzas). LLM Engine: es lo que ejecuta el modelo de lenguaje, respondiendo a indicaciones, infiriendo significado y creando texto. Básicamente, genera inteligencia. Los más utilizados son OpenAI (ChatGPT), Anthropic (Claude), Google (Gemini) y Ollama (ejecuta modelos de código abierto localmente). AI Framework: es la capa de orquestación para crear y gestionar flujos de trabajo. Para decirlo de otra manera, el marco debe estructurar la inteligencia creada por los LLM. Por el momento, el panorama está dominado por LangChain, LLamaIndex y CrewAI. La nueva biblioteca Datapizza AI entra en esta categoría y quiere ser una alternativa a los otros frameworks principales.

En este artículo, mostraré cómo utilizar el nuevo marco de Datapizza para crear agentes de IA con tecnología LLM. Presentaré código Python útil que se puede aplicar fácilmente en otros casos similares (simplemente copie, pegue, ejecute) y recorreré cada línea de código con comentarios para que pueda replicar este ejemplo.

Configuración

Usaré Ollama como motor LLM porque me gusta alojar modelos localmente en mi computadora. Esa es la práctica estándar para todas las empresas con datos confidenciales. Mantener todo local brinda control total sobre la privacidad de los datos, el comportamiento del modelo y el costo.

En primer lugar, debes descargar Ollama del sitio web. Luego, elija un modelo y ejecute el comando indicado en la página para obtener el LLM. Me quedo con Qwen de Alibaba, ya que es inteligente y liviano (ollama run qwen3).

Datapizza AI es compatible con todos los principales motores LLM. Podemos completar la configuración ejecutando los siguientes comandos:

pip instalar datospizza-ai pip instalar datospizza-ai-clientes-openai-like

Como se indica en la documentación oficial, podemos probar rápidamente nuestra pila de IA llamando al modelo con un simple mensaje y haciendo una pregunta. El objeto OpenAILikeClient() es cómo te conectas a la API de Ollama, que generalmente está alojada en la misma URL del host local.

de datapizza.clients.openai_like import OpenAILikeClient llm = “qwen3″ Prompt = ”’ Eres un asistente inteligente, proporciona la mejor respuesta posible a la solicitud del usuario. ”’ ollama = OpenAILikeClient(api_key=””, model=llm, system_prompt=prompt, base_url=”http://localhost:11434/v1″) q = ”’ ¿qué hora es? ”’ llm_res = ollama.invoke(q) imprimir(llm_res.text)

chatbot

Otra forma de probar la capacidad del LLM es crear un Chatbot simple y entablar una conversación. Para hacerlo, en cada interacción, debemos almacenar el historial de chat y enviarlo al modelo, especificando qué dijo quién. El marco Datapizza ya tiene un sistema de memoria incorporado.

from datapizza.memory import Memory from datapizza.type import TextBlock, ROLE memoria = Memoria() memoria.add_turn(TextBlock(content=prompt), rol=ROLE.SYSTEM) while True: ## Usuario q = input(‘🙂 >’) if q == “salir”: break ## LLM llm_res = ollama.invoke(q, memoria=memoria) res = llm_res.text imprimir(“🍕 >”, f”\x1b[1;30m{res}\x1b[0m”)

## Update Memory
memory.add_turn(TextBlock(content=q), role=ROLE.USER)
memory.add_turn(TextBlock(content=res), role=ROLE.ASSISTANT)

If you want to retrieve the chat history, you can just access the memory. Usually, AI frameworks use three roles in the interaction with an LLM: “system” (core instructions), “user” (what was said by the human), “assistant” (what the chatbot replied).

memory.to_dict()

Obviously, the LLM alone is very limited and it can’t do much besides chatting. Therefore, we need to give it the possibility to take action, or in other words, to activate Tools.

Tools

Tools are the main difference between a simple LLM and an AI Agent. When the user requests something that goes beyond the LLM knowledge base (i.e. “what time is it now?“), the Agent should understand that it doesn’t know the answer, activate a Tool to get additional information (i.e. checking the clock), elaborate the result through the LLM, and generate an answer.

The Datapizza framework allows you to create Tools from scratch very easily. You just need to import the decorator @tool and any function can become actionable for the Agent.

from datapizza.tools import tool

@tool
def get_time() -> str:
”’Get the current time.”’
from datetime import datetime
return datetime.now().strftime(“%H:%M”)

get_time()

Then, assign the designated Tool to the Agent, and you’ll have an AI that combines language understanding + autonomy decision making + tool use.

from datapizza.agents import Agent
import os

os.environ[“DATAPIZZA_AGENT_LOG_LEVEL”] = “DEBUG” #max agente de registro = Agente(nombre=”agente único”, cliente=ollama, system_prompt=prompt, herramientas=[get_time]max_steps=2) q = ”’ ¿qué hora es? ”’ agente_res = agente.run(q)

Un agente de IA impulsado por un LLM es un sistema inteligente construido en torno a un modelo de lenguaje que no solo responde, sino que razona, decide y actúa. Además de la conversación (que significa chatear con una base de conocimientos de propósito general), las acciones más comunes que pueden realizar los Agentes son RAG (chatear con sus documentos), Consultar (chatear con una base de datos), Búsqueda web (chatear con todo Internet).

Por ejemplo, probemos con una herramienta de búsqueda web. En Python, la forma más sencilla de hacerlo es con el famoso navegador privado DuckDuckGo. Puede utilizar directamente la biblioteca original o el contenedor del marco Datapizza (pip install datapizza-ai-tools-duckduckgo).

desde datapizza.tools.duckduckgo importar DuckDuckGoSearchTool DuckDuckGoSearchTool().search(query=”powell”)

Creemos un Agente que pueda buscarnos en la web. Si desea hacerlo más interactivo, puede estructurar la IA como lo hice con el Chatbot.

os.environ[“DATAPIZZA_AGENT_LOG_LEVEL”] = “ERROR” #desactivar el mensaje de registro = ”’ Eres periodista. Debe hacer suposiciones, utilizar su herramienta para investigar, hacer conjeturas y formular una respuesta final. La respuesta final debe contener hechos, fechas y evidencias que respalden su suposición. ”’ memoria = Memoria() agente = Agente(nombre=”agente único”, cliente=ollama, system_prompt=prompt, herramientas=[DuckDuckGoSearchTool()]memoria=memoria, max_steps=2) while True: ## Usuario q = input(‘🙂 >’) if q == “salir”: break ## Agente agent_res = agent.run(q) res = agent_res.text print(“🍕 >”, f”\x1b[1;30m{res}\x1b[0m”)

## Update Memory
memory.add_turn(TextBlock(content=q), role=ROLE.USER)
memory.add_turn(TextBlock(content=res), role=ROLE.ASSISTANT)

Multi-Agent System

The real strength of Agents is the ability to collaborate with each other, just like humans do. These teams are called Multi-Agent Systems (MAS), a group of AI Agents that work together in a shared environment to solve complex problems that are too difficult for a single one to handle alone.

This time, let’s create a more advanced Tool: code execution. Please note that LLMs know how to code by being exposed to a large corpus of both code and natural language text, where they learn patterns, syntax, and semantics of programming languages. But since they can not complete any real action, the code they create is just text. In short, LLMs can generate Python code but can’t execute it, Agents can.

import io
import contextlib

@tool
def code_exec(code:str) -> str:
”’Execute python code. Use always the function print() to get the output”’
output = io.StringIO()
with contextlib.redirect_stdout(output):
try:
exec(code)
except Exception as e:
print(f”Error: {e}”)
return output.getvalue()

code_exec(“from datetime import datetime; print(datetime.now().strftime(‘%H:%M’))”)

There are two types of MAS: the sequential process ensures tasks are executed one after the other, following a linear progression. On the other hand, the hierarchical structure simulates traditional organizational hierarchies for efficient task delegation and execution. Personally, I tend to prefer the latter as there is more parallelism and flexibility.

With the Datapizza framework, you can link two or more Agents with the function can_call(). In this way, one Agent can pass the current task to another Agent.

prompt_senior = ”’
You are a senior Python coder. You check the code generated by the Junior,
and use your tool to execute the code only if it’s correct and safe.
”’
agent_senior = Agent(name=”agent-senior”, client=ollama, system_prompt=prompt_senior,
tools=[code_exec]) Prompt_junior = ”’ Eres un codificador junior de Python. Puedes generar código pero no puedes ejecutarlo. Recibe una solicitud del Gerente y su resultado final debe ser código Python para transmitir. Si no conoce algunos comandos específicos, puede usar su herramienta y buscar en la web “¿cómo… con Python?”. ”’ agente_junior = Agente(nombre=”agente-junior”, cliente=ollama, system_prompt=prompt_junior, herramientas=[DuckDuckGoSearchTool()]) agente_junior.can_call([agent_senior]) Prompt_manager = ”’ No sabes nada, sólo eres un gerente. Después de recibir una solicitud del usuario, primero le pide al Junior que genere el código y luego al Senior que lo ejecute. ”’ agent_manager = Agente(nombre=”agente-manager”, cliente=ollama, system_prompt=prompt_manager, herramientas=[]) agente_manager.can_call([agent_junior, agent_senior]) q = ”’ Traza el marco de datos del Titanic. Puede encontrar los datos aquí: https://raw.githubusercontent.com/mdipietro09/DataScience_ArtificialIntelligence_Utils/master/machine_learning/data_titanic.csv ”’ agent_res = agent_manager.run(q) #print(agent_res.text)

Conclusión

Este artículo ha sido un tutorial para presentar Datapizza AI, un marco completamente nuevo para crear chatbots y agentes de IA con tecnología LLM. La biblioteca es muy flexible y fácil de usar y puede cubrir diferentes casos de uso de GenAI. Lo usé con Ollama, pero se puede vincular con todos los motores famosos, como OpenAI.

Código completo para este artículo: GitHub

¡Espero que lo hayas disfrutado! No dude en ponerse en contacto conmigo si tiene preguntas y comentarios o simplemente para compartir sus proyectos interesantes.

👉Conectémonos 👈

(Todas las imágenes son del autor a menos que se indique lo contrario)