Dynamiq: Marco de orquestación de cuerpos inteligentes con soporte de agentes RAG y LLM para simplificar el desarrollo de aplicaciones de IA
Últimos recursos sobre IAActualizado hace 9 meses Círculo de intercambio de inteligencia artificial 3.5K 00
Introducción general
Dynamiq es un marco de orquestación de IA de código abierto diseñado para aplicaciones de IA de agentes y Large Language Modelling (LLM). Su objetivo es simplificar el desarrollo de aplicaciones basadas en IA, especialmente en el área de la Generación Aumentada de Recuperación (RAG) y la orquestación de agentes LLM.Dynamiq proporciona ricos módulos de características y documentación detallada para ayudar a los desarrolladores a empezar rápidamente y construir aplicaciones complejas de IA de manera eficiente.
especificidades
Dynamiq es un marco de IA innovador que permite a la IA resolver problemas del mundo real combinando las capacidades de razonamiento de los LLM (el cerebro) con la capacidad de realizar acciones específicas (las manos), lo que permite a la IA comprender tareas, razonar y realizar acciones prácticas para resolver problemas del mundo real, al igual que hacen los humanos.
// Definición de ReAct:
- ReAct es un marco que combina las capacidades de razonamiento de los LLM con la posibilidad de realizar operaciones
- Permite a la IA comprender, planificar e interactuar con el mundo real.
// Cómo funcionan los agentes ReAct:
Integra dos componentes clave:
- Cerebro (habilidades de pensamiento proporcionadas por LLM)
- Manos (capacidad para realizar operaciones)
// Componentes del marco:
- Tarea
- Agente (inteligencia, incluidos LLM y herramientas)
- Medio ambiente
- Respuesta
// Ejemplo de aplicación práctica:
Los autores ilustran el flujo de trabajo del agente ReAct con un escenario que determina si se necesita un paraguas:
- Recibir tareas de usuarios preguntando si necesitan llevar paraguas
- Utilice la herramienta para consultar el parte meteorológico
- realizar análisis de inferencia
- Dar una respuesta sugerida
// Framework Dynamiq compartido por Akshay:
Dynamiq es un marco integral para el desarrollo de IA de próxima generación centrado en agilizar el proceso de desarrollo de aplicaciones de IA, con características clave como la capacidad de orquestar y gestionar aplicaciones de IA basadas en la RAG y el sistema de Agentes de LLM.
// Características principales:
Todo en uno: Un marco de trabajo ("todo en uno") que integra todas las herramientas y funcionalidades necesarias para desarrollar aplicaciones de IA.
Áreas de especialización:
- Organización del sistema RAG
- Gestión del Agente LLM
- Optimización del proceso de desarrollo para aplicaciones de IA
Posicionamiento:
- Actúa como marco de orquestación, centrándose en la coordinación y gestión de los componentes individuales de la IA.
- Desarrollo de aplicaciones de IA agéntica
- Simplificar la complejidad para los desarrolladores a la hora de crear aplicaciones de IA
Lista de funciones
- Instalación y configuración: Proporciona una guía de instalación detallada para entornos Python.
- Documentación y ejemplosAmplia documentación y código de ejemplo para ayudar a los usuarios a empezar rápidamente.
- Proceso LLM simple: Proporciona ejemplos sencillos de flujos de trabajo LLM para facilitar su comprensión y uso.
- Agente ReActAgente para tareas de codificación complejas con intérprete de código E2B integrado.
- programación multiagente: Apoyo a la cooperación multiagente y soluciones para tareas complejas.
- Indexación y recuperación de documentos RAG: Admite el preprocesamiento, la incrustación de vectores y el almacenamiento de documentos PDF, así como la recuperación de documentos relacionados y la respuesta a preguntas.
- Chatbot con memoria: Un chatbot sencillo que permite almacenar y recuperar el historial de conversaciones.
Utilizar la ayuda
Instalación y configuración
- Instalación de PythonAsegúrese de que tiene Python instalado en su ordenador.
- Instalación de Dynamiq::
pip install dynamiq
O construir a partir del código fuente:
git clone https://github.com/dynamiq-ai/dynamiq.git cd dynamiq poetry install
ejemplo de uso
Proceso LLM simple
A continuación se muestra un ejemplo sencillo de flujo de trabajo LLM:
from dynamiq.nodes.llms.openai import OpenAI
from dynamiq.connections import OpenAI as OpenAIConnection
from dynamiq import Workflow
from dynamiq.prompts import Prompt, Message
# 定义翻译提示模板
prompt_template = """
Translate the following text into English: {{ text }}
"""
prompt = Prompt(messages=[Message(content=prompt_template, role="user")])
# 设置LLM节点
llm = OpenAI(
id="openai",
connection=OpenAIConnection(api_key="$OPENAI_API_KEY"),
model="gpt-4o",
temperature=0.3,
max_tokens=1000,
prompt=prompt
)
# 创建工作流对象
workflow = Workflow()
workflow.flow.add_nodes(llm)
# 运行工作流
result = workflow.run(input_data={"text": "Hola Mundo!"})
print(result.output)
Agente ReAct
A continuación se muestra un ejemplo de agente ReAct que admite tareas de codificación complejas:
from dynamiq.nodes.llms.openai import OpenAI
from dynamiq.connections import OpenAI as OpenAIConnection, E2B as E2BConnection
from dynamiq.nodes.agents.react import ReActAgent
from dynamiq.nodes.tools.e2b_sandbox import E2BInterpreterTool
# 初始化E2B工具
e2b_tool = E2BInterpreterTool(connection=E2BConnection(api_key="$API_KEY"))
# 设置LLM
llm = OpenAI(
id="openai",
connection=OpenAIConnection(api_key="$API_KEY"),
model="gpt-4o",
temperature=0.3,
max_tokens=1000,
)
# 创建ReAct代理
agent = ReActAgent(
name="react-agent",
llm=llm,
tools=[e2b_tool],
role="Senior Data Scientist",
max_loops=10,
)
# 运行代理
result = agent.run(input_data={"input": "Add the first 10 numbers and tell if the result is prime."})
print(result.output.get("content"))
programación multiagente
A continuación se presenta un ejemplo de colaboración entre varios agentes:
from dynamiq.connections import OpenAI as OpenAIConnection, ScaleSerp as ScaleSerpConnection, E2B as E2BConnection
from dynamiq.nodes.llms import OpenAI
from dynamiq.nodes.agents.orchestrators.adaptive import AdaptiveOrchestrator
from dynamiq.nodes.agents.orchestrators.adaptive_manager import AdaptiveAgentManager
from dynamiq.nodes.agents.react import ReActAgent
from dynamiq.nodes.agents.reflection import ReflectionAgent
from dynamiq.nodes.tools.e2b_sandbox import E2BInterpreterTool
from dynamiq.nodes.tools.scale_serp import ScaleSerpTool
# 初始化工具
python_tool = E2BInterpreterTool(connection=E2BConnection(api_key="$E2B_API_KEY"))
search_tool = ScaleSerpTool(connection=ScaleSerpConnection(api_key="$SCALESERP_API_KEY"))
# 初始化LLM
llm = OpenAI(connection=OpenAIConnection(api_key="$OPENAI_API_KEY"), model="gpt-4o", temperature=0.1)
# 定义代理
coding_agent = ReActAgent(
name="coding-agent",
llm=llm,
tools=[python_tool],
role="Expert agent with coding skills. Goal is to provide the solution to the input task using Python software engineering skills.",
max_loops=15,
)
planner_agent = ReflectionAgent(
name="planner-agent",
llm=llm,
role="Expert agent with planning skills. Goal is to analyze complex requests and provide a detailed action plan.",
)
search_agent = ReActAgent(
name="search-agent",
llm=llm,
tools=[search_tool],
role="Expert agent with web search skills. Goal is to provide the solution to the input task using web search and summarization skills.",
max_loops=10,
)
# 初始化自适应代理管理器
agent_manager = AdaptiveAgentManager(llm=llm)
# 创建编排器
orchestrator = AdaptiveOrchestrator(
name="adaptive-orchestrator",
agents=[coding_agent, planner_agent, search_agent],
manager=agent_manager,
)
# 定义输入任务
input_task = (
"Use coding skills to gather data about Nvidia and Intel stock prices for the last 10 years, "
"calculate the average per year for each company, and create a table. Then craft a report "
"and add a conclusion: what would have been better if I had invested $100 ten years ago?"
)
# 运行编排器
result = orchestrator.run(input_data={"input": input_task})
print(result.output.get("content"))
Indexación y recuperación de documentos RAG
Dynamiq es compatible con la Generación de Aumento de Recuperación (RAG), que puede conseguirse siguiendo los pasos que se indican a continuación:
- Preprocesamiento de documentosConvertir archivos PDF de entrada en incrustaciones vectoriales y almacenarlas en una base de datos vectorial.
- búsqueda de documentos: Recupera documentos relevantes y genera respuestas basadas en las consultas de los usuarios.
A continuación se muestra un ejemplo sencillo de un flujo de trabajo RAG:
from io import BytesIO
from dynamiq import Workflow
from dynamiq.connections import OpenAI as OpenAIConnection, Pinecone as PineconeConnection
from dynamiq.nodes.converters import PyPDFConverter
from dynamiq.nodes.splitters.document import DocumentSplitter
from dynamiq.nodes.embedders import OpenAIDocumentEmbedder
from dynamiq.nodes.writers import PineconeDocumentWriter
# 初始化工作流
rag_wf = Workflow()
# PDF文档转换器
converter = PyPDFConverter(document_creation_mode="one-doc-per-page")
rag_wf.flow.add_nodes(converter)
# 文档拆分器
document_splitter = (
DocumentSplitter(split_by="sentence", split_length=10, split_overlap=1)
.inputs(documents=converter.outputs.documents)
.depends_on(converter)
)
rag_wf.flow.add_nodes(document_splitter)
# OpenAI向量嵌入
embedder = (
OpenAIDocumentEmbedder(connection=OpenAIConnection(api_key="$OPENAI_API_KEY"), model="text-embedding-3-small")
.inputs(documents=document_splitter.outputs.documents)
.depends_on(document_splitter)
)
rag_wf.flow.add_nodes(embedder)
# Pinecone向量存储
vector_store = (
PineconeDocumentWriter(connection=PineconeConnection(api_key="$PINECONE_API_KEY"), index_name="default", dimension=1536)
.inputs(documents=embedder.outputs.documents)
.depends_on(embedder)
)
rag_wf.flow.add_nodes(vector_store)
# 准备输入PDF文件
file_paths = ["example.pdf"]
input_data = {
"files": [BytesIO(open(path, "rb").read()) for path in file_paths],
"metadata": [{"filename": path} for path in file_paths],
}
# 运行RAG索引流程
rag_wf.run(input_data=input_data)
Chatbot con memoria
He aquí un ejemplo de chatbot sencillo con memoria:
from dynamiq.connections import OpenAI as OpenAIConnection from dynamiq.memory import Memory from dynamiq.memory.backend.in_memory import InMemory from dynamiq.nodes.agents.simple import SimpleAgent from dynamiq.nodes.llms import OpenAI AGENT_ROLE = "helpful assistant, goal is to provide useful information and answer questions" llm = OpenAI( connection=OpenAIConnection(api_key="$OPENAI_API_KEY"), model="gpt-4o", temperature=0.1, ) memory = Memory(backend=InMemory()) agent = SimpleAgent( name="Agent", llm=llm, role=AGENT_ROLE, id="agent", memory=memory, ) def main(): print("Welcome to the AI Chat! (Type 'exit' to end)") while True: user_input = input("You: ") if user_input.lower() == "exit": break response = agent.run({"input": user_input}) response_content = response.output.get("content") print(f"AI: {response_content}") if __name__ == "__main__": main()
© declaración de copyright
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...