Агенты, работающие на Gemini Pro: разблокировка агентских рабочих процессов с помощью LangTrace
Узнайте, как Gemini Pro и LangTrace открывают агентные рабочие процессы для расширенных возможностей LLM. Исследуйте планирование, использование внешних инструментов и трассировку для готовых к производству систем искусственного интеллекта.
15 января 2025 г.
Раскройте силу агентов, управляемых искусственным интеллектом, с помощью экспериментальной модели Gemini Pro. Узнайте, как этот передовой языковой модель может бесшовно интегрировать внешние инструменты и API для решения сложных задач, предоставляя всеобъемлющие и адаптированные ответы. Исследуйте преимущества этого агентного подхода и откройте для себя новые возможности для вашего контента и рабочих процессов.
Что такое агент и как он работает?
Настройка окружения
Создание конвейера RAG
Настройка инструментов
Создание агента
Взаимодействие с агентом
Заключение
Что такое агент и как он работает?
Что такое агент и как он работает?
Агент - это, по сути, большая языковая модель (LLM) с дополнительными возможностями, включая:
-
Планирование: Агент может разложить запрос пользователя и разработать всеобъемлющий план для его решения.
-
Внешние инструменты/API: Агент имеет доступ к внешним инструментам или API, которые он может использовать для выполнения своего плана.
-
Память: Агент отслеживает, на каком этапе выполнения плана он находится и какие дополнительные шаги ему необходимо предпринять.
В представленном примере агент использует экспериментальную модель Gemini 1.5 Pro в качестве LLM, и у него есть доступ к двум инструментам:
-
RAG (Retrieval-Augmented Generation): Это выступает в качестве базы знаний агента, используя статью "Attention is All You Need".
-
Веб-поиск: Агент может искать информацию в Интернете, чтобы дополнить свои знания.
Агент использует LangTrace для отслеживания всех шагов, предпринимаемых им при выполнении плана. Эта наблюдаемость имеет решающее значение для понимания процесса принятия решений агентом, особенно в производственной среде.
Настройка окружения
Настройка окружения
Чтобы начать, нам необходимо установить необходимые пакеты и настроить требуемые ключи API. Вот как мы это сделаем:
-
Установка пакетов: Мы установим пакет Google Generative AI, LangChain, Tavly Python (наш поисковый движок), FAISS (векторное хранилище) и SDK Python LangTrace.
-
Импорт пакетов: Мы импортируем разделитель текста по символам, загрузчик PDF, результаты поиска Tavly и модель встраивания Google Generative AI.
-
Настройка ключей API:
- Ключ API Tavly: Вы можете получить ключ API Tavly, нажав на ссылку "получить ключ API" в описании видео.
- Ключ API Google: Вы можете получить ключ API Google из вашей студии Google AI.
- Ключ API LangTrace: Вам нужно будет создать учетную запись на LangTrace, открытой платформе наблюдаемости для приложений LLM. Затем вы можете нажать на "сгенерировать ключ API", чтобы получить свой ключ API.
-
Установка переменных среды: Мы установим ключ API Tavly и ключ API LangTrace в качестве переменных среды.
-
Обработка ошибок: Если вы увидите какие-либо ошибки, связанные с интеграциями LangSmith, не беспокойтесь о них. Мы заинтересованы только в LangChain и интеграции Gemini Pro на данном этапе.
Теперь, когда у нас настроена среда, мы можем перейти к следующим шагам по созданию агента и интеграции необходимых инструментов.
Создание конвейера RAG
Создание конвейера RAG
Чтобы настроить базовый конвейер RAG, нам сначала нужно загрузить документ PDF, который будет служить нашей базой знаний. В данном случае у нас есть файл "transformers.pdf", который содержит 12 страниц контента.
Затем мы используем RecursiveCharacterTextSplitter
из модуля langchain.text_splitter
, чтобы разбить документ на более мелкие фрагменты, каждый из которых содержит до 500 токенов с перекрытием в 100 токенов. Это позволяет нам создать в общей сложности 24 различных фрагмента, которые могут быть использованы для поиска.
Затем мы загружаем модель встраивания Google Generative AI, которая будет использоваться для вычисления встраиваний для каждого из фрагментов документа. Встраивания имеют размерность 768.
Для хранения встраиваний мы используем векторное хранилище FAISS. Это позволяет нам эффективно выполнять поиск по сходству на фрагментах документа при наличии запроса.
Наконец, мы создаем инструмент RetrievalQA
, который может использоваться агентом для извлечения соответствующей информации из базы знаний. Инструмент настроен с использованием FAISS-ретривера и описанием, указывающим на его полезность для извлечения информации, связанной со статьей "Attention is All You Need".
С этой настройкой агент сможет использовать конвейер RAG для поиска и извлечения соответствующей информации при ответе на вопросы о трансформерах и связанных с ними темах.
Настройка инструментов
Настройка инструментов
Чтобы настроить инструменты для нашего агента, нам сначала нужно установить необходимые пакеты:
1# Установка необходимых пакетов 2!pip install google-generative-ai langchain tavlpy faiss-cpu langtracing
Затем мы импортируем необходимые модули и настраиваем ключи API для различных служб, которые мы будем использовать:
1import os 2from langchain.document_loaders import PyPDFLoader 3from langchain.text_splitter import RecursiveCharacterTextSplitter 4from langchain.embeddings.openai import OpenAIEmbeddings 5from langchain.vectorstores import FAISS 6from langtracing.sdk.python import LangTracer 7 8# Настройка ключа API Tavly 9TAVLY_API_KEY = os.environ.get("TAVLY_API_KEY") 10 11# Настройка ключа API LangTrace 12LANGTRACING_API_KEY = os.environ.get("LANGTRACING_API_KEY")
Затем мы настраиваем конвейер RAG (Retrieval Augmented Generation), загружая документ PDF, разбивая его на фрагменты и создавая встраивания и векторное хранилище:
1# Загрузка документа PDF 2loader = PyPDFLoader("transformers.pdf") 3documents = loader.load() 4 5# Разбиение документа на фрагменты 6text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100, length_function=len) 7chunks = text_splitter.split_documents(documents) 8 9# Создание встраиваний и векторного хранилища 10embeddings = OpenAIEmbeddings() 11vector_store = FAISS.from_documents(chunks, embeddings)
Наконец, мы создаем два инструмента, к которым будет иметь доступ наш агент: инструмент поиска и инструмент поиска:
1from langchain.agents import Tool 2 3# Создание инструмента поиска 4retriever_tool = Tool( 5 name="retriever_tool", 6 description="Для любой информации, связанной с архитектурой трансформеров, используйте этот инструмент. Полезно для извлечения информации, связанной со статьей "Attention is all you need".", 7 func=lambda query: vector_store.similarity_search(query, k=3) 8) 9 10# Создание инструмента поиска 11search_tool = Tool( 12 name="search_tool", 13 description="Поисковая система, оптимизированная для всеобъемлющих, точных и надежных результатов. Полезно, когда вам нужно ответить на вопросы о текущих событиях. Ввод должен быть поисковым запросом.", 14 func=lambda query: Tavly(TAVLY_API_KEY).search(query) 15)
С настроенными инструментами мы теперь готовы создать агента и начать его использовать для ответа на вопросы.
Создание агента
Создание агента
Чтобы создать агента, мы будем использовать класс ReAct agent из LangChain. Это особый тип агента, который может планировать, иметь память и иметь доступ к инструментам, которые мы хотим, чтобы он использовал.
Нам сначала нужно предоставить агенту подробную подсказку или инструкции для управления инструментами и разработки плана. LangChain предоставляет шаблон для этого, используя LangChain Hub, который похож на Llama Index Hub.
Мы будем использовать шаблон ReAct и модифицировать его по мере необходимости. Подсказка включает следующее:
- Ответьте на следующие вопросы как можно лучше.
- У вас есть доступ к следующим инструментам:
- Инструмент поиска: Для любой информации, связанной со статьей "Attention is All You Need".
- Инструмент поиска: Поисковая система, оптимизированная для всеобъемлющих, точных и надежных результатов. Полезно для ответа на вопросы о текущих событиях.
- Используйте следующий формат:
- Входной вопрос, на который вы должны ответить.
- Ваш мыслительный процесс.
- Действие, которое нужно предпринять (т.е. какой инструмент использовать).
- Вывод инструмента.
- Окончательный ответ.
С этой подсказкой мы можем создать агента ReAct:
1agent = ReActAgent( 2 name="Gemini 1.5 Pro", 3 tools=tools, 4 system_message=system_prompt 5)
Здесь tools
- это список инструментов, которые мы определили ранее, а system_prompt
- это подсказка, которую мы создали на основе шаблона ReAct.
Теперь мы можем использовать AgentExecutor
для выполнения агента и предоставления ему запросов:
1executor = AgentExecutor( 2 agent=agent, 3 tools=tools, 4 verbose=True 5) 6 7result = executor.run("What is the current weather in LA?") 8print(result)
Агент пройдет через свой мыслительный процесс, использует соответствующие инструменты и предоставит окончательный ответ. Вы также можете проверить следы с помощью библиотеки LangTrace, чтобы понять процесс принятия решений агентом.
Взаимодействие с агентом
Взаимодействие с агентом
Агент, которого мы настроили, является Реактивным Агентом, что означает, что он может планировать, выполнять действия и обновлять свое внутреннее состояние в зависимости от результатов этих действий. Давайте посмотрим, как мы можем взаимодействовать с этим агентом.
Прежде всего, мы зададим агенту простой вопрос о текущей погоде в Лос-Анджелесе:
1question = "What is the current weather at LA?" 2result = agent.run(question) 3print(result)
Агент проходит через мыслительный процесс, решает использовать инструмент поиска, чтобы узнать текущую погоду, выполняет поиск и затем предоставляет окончательный ответ.
Затем давайте спросим агента о количестве золотых медалей по странам на текущих Олимпийских играх:
1question = "Can you give me a list of gold medals per country in the current Olympics?" 2result = agent.run(question) 3print(result)
Здесь агент снова решает использовать инструмент поиска, чтобы найти соответствующую информацию, обрабатывает результаты и предоставляет ответ.
Наконец, давайте попросим агента объяснить концепцию внимания в трансформерах:
1question = "Can you explain the concept of attention in transformers?" 2result = agent.run(question) 3print(result)
В этом случае агент распознает, что вопрос связан со статьей "Attention is All You Need", поэтому он решает использовать инструмент поиска, чтобы извлечь соответствующую информацию из статьи. Затем он обрабатывает информацию и предоставляет краткое объяснение основной концепции масштабированного точечного внимания.
Во всех этих взаимодействиях вы можете видеть мыслительный процесс агента и шаги, которые он предпринимает, чтобы прийти к окончательному ответу. Использование инструментов, таких как LangTrace, помогает нам понять внутреннюю работу агента и производительность системы.
Заключение
Заключение
Экспериментальная модель Gemini 1.5 Pro продемонстрировала свои возможности в качестве эффективного агента, используя инструменты, такие как RAG и веб-поиск, для предоставления всеобъемлющих и лаконичных ответов на различные запросы. Использование LangTrace было важным для отслеживания мыслительного процесса агента и шагов выполнения, предоставляя ценные insights для оптимизации производительности системы.
Хотя информация о погоде была немного неточной
Часто задаваемые вопросы
Часто задаваемые вопросы