Microsoft Autogen#

AutoGen - открытый программный фреймворк для создания агентов искусственного интеллекта и обеспечения сотрудничества между несколькими агентами для решения задач:

  • Разговоры нескольких агентов: агенты AutoGen могут взаимодействовать друг с другом для выполнения задач. Это позволяет создавать более сложные и изощренные приложения, чем те, которые возможны при использовании одного языка моделирования (LLM).

  • Настройка: агенты AutoGen можно настроить под конкретные потребности приложения. Сюда входит возможность выбора языков моделирования (LLM), типов разрешенного человеческого ввода и используемых инструментов.

  • Участие человека: AutoGen допускает участие человека. Это означает, что люди могут предоставлять вводную информацию и обратную связь агентам по мере необходимости.

С помощью интеграции Autogen-Vector DB создаются рабочие процессы Autogen, поддерживаемые эффективными поисковыми запросами Vector DB.

Установка#

pip install "autogen-agentchat[retrievechat-qdrant]"

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

Конфигурация#

import autogen

config_list = autogen.config_list_from_json("OAI_CONFIG_LIST")

Функция config_list_from_json сначала ищет переменную окружения OAI_CONFIG_LIST, которая должна быть допустимой JSON-строкой. Если она не найдена, функция затем ищет файл формата JSON с именем OAI_CONFIG_LIST. Пример файла можно найти здесь.

Создание агентов для RetrieveChat#

Начните с инициализации агента RetrieveAssistantAgent и агента-посредника пользователя QdrantRetrieveUserProxyAgent. Системное сообщение необходимо установить на «Вы полезный помощник.» для RetrieveAssistantAgent. Подробные инструкции приведены в сообщении пользователя.

from qdrant_client import QdrantClient
from sentence_transformers import SentenceTransformer

from autogen import AssistantAgent
from autogen.agentchat.contrib.retrieve_user_proxy_agent import RetrieveUserProxyAgent

# 1. Create an AssistantAgent instance named "assistant"
assistant = AssistantAgent(
    name="assistant",
    system_message="You are a helpful assistant.",
    llm_config={
        "timeout": 600,
        "cache_seed": 42,
        "config_list": config_list,
    },
)

sentence_transformer_ef = SentenceTransformer("all-distilroberta-v1").encode
client = QdrantClient(url="http://localhost:6333/")

# 2. Create the RetrieveUserProxyAgent instance named "ragproxyagent"
# Refer to https://microsoft.github.io/autogen/docs/reference/agentchat/contrib/retrieve_user_proxy_agent
# for more information on the RetrieveUserProxyAgent
ragproxyagent = RetrieveUserProxyAgent(
    name="ragproxyagent",
    human_input_mode="NEVER",
    max_consecutive_auto_reply=10,
    retrieve_config={
        "task": "code",
        "docs_path": [
            "path/to/some/doc.md",
            "path/to/some/other/doc.md",
        ],
        "chunk_token_size": 2000,
        "model": config_list[0]["model"],
        "vector_db": "qdrant",
        "db_config": {"client": client},
        "get_or_create": True,
        "overwrite": True,
        "embedding_function": sentence_transformer_ef,  # Defaults to "BAAI/bge-small-en-v1.5" via FastEmbed
    },
    code_execution_config=False,
)

Запуск агента#

# Always reset the assistant before starting a new conversation.
assistant.reset()

# We use the ragproxyagent to generate a prompt to be sent to the assistant as the initial message.
# The assistant receives it and generates a response. The response will be sent back to the ragproxyagent for processing.
# The conversation continues until the termination condition is met.

qa_problem = "What is the .....?"
chat_results = ragproxyagent.initiate_chat(assistant, message=ragproxyagent.message_generator, problem=qa_problem)

Дополнительная документация#