Dynamiq: система оркестровки интеллектуальных тел с поддержкой агентов RAG и LLM для упрощения разработки приложений ИИ

Общее введение

Dynamiq - это фреймворк с открытым исходным кодом для оркестровки ИИ, предназначенный для агентного ИИ и приложений большого языкового моделирования (LLM). Он призван упростить разработку приложений, основанных на ИИ, особенно в области генерации дополненного поиска (RAG) и оркестровки агентов LLM. Dynamiq предоставляет богатые функциональные модули и подробную документацию, чтобы помочь разработчикам быстро начать работу и эффективно создавать сложные приложения ИИ.

 

особенности

Dynamiq - это инновационная система искусственного интеллекта, которая позволяет ИИ решать реальные проблемы, объединяя возможности рассуждений LLM (мозг) со способностью выполнять конкретные действия (руки), что позволяет ИИ понимать задачи, рассуждать и предпринимать практические действия для решения реальных проблем, точно так же, как это делают люди!

// Определение ReAct:

  • ReAct это фреймворк, который объединяет возможности рассуждений LLM с возможностью выполнения операций
  • Он позволяет ИИ понимать, планировать и взаимодействовать с реальным миром.

// Как работают агенты ReAct:
Он объединяет два ключевых компонента:

  • Мозг (навыки мышления, полученные на LLM)
  • Руки (способность выполнять операции)

// Компоненты фреймворка:

  • Задание
  • Агент (интеллект, включая LLM и инструменты)
  • Окружающая среда
  • Ответ

// Пример практического применения:
Авторы иллюстрируют работу агента ReAct на примере сценария, определяющего, нужен ли зонтик:

  • Получайте задания от пользователей, спрашивающих, нужно ли им брать с собой зонтик
  • Используйте инструмент для проверки прогноза погоды
  • проводить анализ выводов
  • Дайте предполагаемый ответ

// Фреймворк Dynamiq, которым поделился Акшай:
Dynamiq - это комплексный фреймворк для разработки ИИ нового поколения, ориентированный на оптимизацию процесса разработки ИИ-приложений, с такими ключевыми функциями, как возможность оркестровки и управления ИИ-приложениями на основе RAG и система Агентов LLM.

// Основные характеристики:
All-in-one: универсальный фреймворк, объединяющий все инструменты и функциональные возможности, необходимые для разработки приложений искусственного интеллекта.

Области специализации:

  • Организация системы RAG
  • Управление агентом LLM
  • Оптимизация процесса разработки для приложений ИИ

Позиционирование:

  • Выступает в качестве структуры оркестровки, сосредоточенной на координации и управлении отдельными компонентами ИИ.
  • Разработка приложений для агентного ИИ
  • Упрощение сложностей для разработчиков, создающих приложения с искусственным интеллектом

 

Список функций

  • Установка и настройка: Предоставляет подробное руководство по установке для поддержки сред Python.
  • Документация и примерыБогатая документация и примеры кода помогут пользователям быстро освоиться.
  • Простой процесс получения степени магистра: Приведите простые примеры рабочих процессов LLM для облегчения понимания и использования.
  • Агент ReAct: Агент для поддержки сложных задач кодирования с интегрированным интерпретатором кода E2B.
  • мультиагентное планирование: Поддержка мультиагентного сотрудничества и решения сложных задач.
  • Индексирование и поиск документов RAG: Поддерживает предварительную обработку, встраивание векторов и хранение PDF-документов, а также поиск связанных с ними документов и ответы на вопросы.
  • Чатбот с памятью: Простой чатбот, поддерживающий хранение и извлечение истории разговоров.

 

Использование помощи

Установка и настройка

  1. Установка Python: Убедитесь, что на вашем компьютере установлен Python.
  2. Установка Dynamiq::
    pip install dynamiq
    

    Или собрать из исходного кода:

    git clone https://github.com/dynamiq-ai/dynamiq.git
    cd dynamiq
    poetry install
    

Пример использования

Простой процесс получения степени магистра

Ниже приведен пример простого рабочего процесса 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)

Агент ReAct

Ниже приведен пример агента ReAct, который поддерживает сложные задачи кодирования:

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"))

мультиагентное планирование

Ниже приведен пример совместной работы нескольких агентов:

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"))

Индексирование и поиск документов RAG

Dynamiq поддерживает функцию Retrieval Augmentation Generation (RAG), которую можно реализовать, выполнив следующие действия:

  1. Предварительная обработка документов: Преобразование входных PDF-файлов в векторные вкрапления и их хранение в базе данных векторов.
  2. поиск документов: Получение релевантных документов и генерация ответов на основе запросов пользователей.

Ниже приведен простой пример рабочего процесса 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)

Чатбот с памятью

Вот пример простого чатбота с памятью:

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()
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...