Научитесь использовать LangChain и Pinecone для создания агентов LLM, которые могут получить доступ к Интернету и базам знаний.

Агенты ИИ революционизируют наш подход к решению проблем. Создавая LLM, которые могут понимать, анализировать и использовать различные источники данных, мы начинаем поверхностно интегрировать агентов в наши процедуры. Эти агенты, владеющие инструментами, необходимы для более глубокого взаимодействия между нами и нашими моделями.

Рассмотрим LLM, который может вдумчиво общаться, используя свои инструменты для предоставления полезной информации. Например, мы можем создать экстраполирующие функции для доступа к внешним данным, включая поиск в реальном времени и запросы к базе знаний.

Мысль: это интригующий запрос. Возможно, мне потребуется собрать дополнительную информацию.

Действие: действие поиска

Входные данные: «Какова история искусственного интеллекта?»

Наблюдение. Концепция искусственного интеллекта уходит своими корнями в древний мир, но только в середине 20 века ИИ, каким мы его знаем сегодня, начал обретать форму. Такие ученые, как Алан Тьюринг и Джон Маккарти, считаются пионерами в этой области. Понятно, что развитие ИИ было постепенным процессом.

Действие: База знаний

Исходные данные: «Каковы основные вехи в развитии искусственного интеллекта?»

Наблюдение: некоторые из ключевых вех в истории искусственного интеллекта включают разработку Аланом Тьюрингом машины Тьюринга, Дартмутскую конференцию, на которой Джон Маккарти ввел термин «искусственный интеллект», изобретение Фрэнком Розенблаттом первой машины нейронной сети «Персептрон». , внедрение алгоритмов машинного обучения и, в последнее время, разработка передовых моделей искусственного интеллекта, таких как OpenAI GPT-3. Окончательный ответ: История искусственного интеллекта обширна и увлекательна, она развивается от теоретических истоков до современных передовых возможностей. Заметные вехи включают в себя машину Тьюринга Алана Тьюринга, введение термина «искусственный интеллект» на конференции в Дартмуте и разработку передовых моделей ИИ, таких как GPT-3 OpenAI.

Эта возможность доступа к различным источникам информации позволяет нам взаимодействовать с нашими моделями новыми способами. Мы можем получить более полные и детализированные ответы и создать специализированные агенты для сценариев использования потребителями. В этом руководстве мы познакомим вас с процессом создания агента LLM с использованием LangChain и Pinecone.

Шаг 1. Настройка среды

Для начала нам нужно установить необходимые библиотеки Python. Если вы еще этого не сделали, установите LangChain и Pinecone с помощью pip:

pip install langchain pinecone-client

Теперь у нас есть доступ к библиотекам, которые нам нужны для создания нашего агента LLM.

Шаг 2: База LLM

База LLM — это двигатель нашего агента — здесь происходит основное мышление. Для этого мы будем использовать OpenAI GPT-4.

from langchain.models import OpenAI

llm = OpenAI(temperature=0.7)

Параметр temperature влияет на случайность вывода модели. Меньшее значение, например 0,2, приводит к более сфокусированным и детерминированным результатам, а более высокое значение, например 0,8, дает более разнообразные и непредсказуемые результаты. Вы можете настроить это в соответствии с вашими потребностями.

Шаг 3: Создание пользовательского шаблона подсказки

Теперь, когда у нас есть готовая база LLM, пришло время настроить наш шаблон приглашения. Этот шаблон позволяет нам формировать разговор так, как мы хотим. Например, мы можем захотеть, чтобы наш агент сначала думал, затем действовал и, наконец, наблюдал за результатом.

from langchain.templates import CustomPromptTemplate

template_with_history = """
Thought: {{thought}}
Action: {{action}}
Action Input: {{action_input}}
{% for name, result in action_outputs.items() %}
Observation: {{result.observation}}
{% endfor %}
Final Answer: {{answer}}
"""

prompt_with_history = CustomPromptTemplate(
    template=template_with_history,
    tools=[],
    input_variables=["input", "intermediate_steps", "history"]
)

С помощью этого шаблона приглашения наш LLM предоставит вдумчивое наблюдение, примет решение о действии, создаст ввод действия, сделает наблюдение и, наконец, предоставит ответ.

Шаг 4: Создание инструментов и настройка базы знаний с помощью Pinecone

Инструменты дают нашему агенту возможность доступа к различным источникам информации. Мы создадим два инструмента: инструмент поиска и инструмент поиска в базе знаний с использованием Pinecone.

Начнем с настройки инструмента поиска. Для этой цели мы будем использовать Bing Search API:

from langchain.tools import Bing

# Create an instance of the Bing search tool
search_tool = Bing(api_key="<your-bing-api-key>")

Инструмент базы знаний немного сложнее. Мы будем использовать сосновую шишку для этой цели. Pinecone — это служба векторной базы данных, которая позволяет нам выполнять эффективный поиск сходства в многомерных данных.

Теперь, чтобы создать новый сервис Pinecone, вам нужно настроить свою учетную запись Pinecone и получить ключ API.

import pinecone

# Initialize Pinecone
pinecone.init(api_key="<your-pinecone-api-key>")

# Create a new Pinecone service
index_name = "knowledge-base"
if index_name not in pinecone.list_indexes():
    pinecone.create_index(name=index_name, dimension=300, metric="cosine")

Теперь давайте создадим инструмент извлечения шишек для взаимодействия с этим сервисом. Мы будем использовать цепочку под названием RetrievalQA из langchain:

from langchain.chains import RetrievalQA
from langchain import OpenAI

# Initialize an OpenAI agent
llm = OpenAI(temperature=0)

# Create a Pinecone retriever tool
knowledge_base_tool = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=index_name)

Теперь, когда у нас есть готовые инструменты, мы можем добавить их в набор инструментов:

expanded_tools = [
    Tool(
        name="Search",
        func=search_tool.run,
        description="useful for when you need to answer questions about current events"
    ),
    Tool(
        name='Knowledge Base',
        func=knowledge_base_tool.run,
        description="Useful for general questions about how to do things and for details on interesting topics. Input should be a fully formed question."
    )
]

Шаг 5: Построение цепочки LLM

Когда база LLM, шаблон приглашения и инструменты готовы, пришло время создать нашу цепочку LLM. Цепочка — это, по сути, поток мыслей и действий, которым будет следовать наш агент.

Вот как это настроить:

from langchain import LLMChain

# Create the LLM Chain
llm_chain = LLMChain(llm=llm, prompt_template=prompt_template, tools=expanded_tools)The LLMChain constructor takes three arguments: the LLM base, the prompt template, and a list of tools.

Шаг 6: Определение парсера вывода

Теперь у нашего агента есть прочная база и набор мощных инструментов. Однако, чтобы эффективно понять вывод нашего агента, нам необходимо правильно его проанализировать. Мы сделаем это, определив парсер вывода:

from langchain.agents import LLMSingleActionAgent
from langchain.executors import AgentExecutor
from langchain.memory import ConversationBufferWindowMemory

# List of tool names
tool_names = [tool.name for tool in expanded_tools]

# Create the custom agent
custom_agent = LLMSingleActionAgent(
    llm_chain=llm_chain, 
    output_parser=output_parser,
    stop=["\nObservation:"], 
    allowed_tools=tool_names
)

# Define the memory for the agent
agent_memory = ConversationBufferWindowMemory(k=2)

# Build the Agent Executor
agent_executor = AgentExecutor.from_agent_and_tools(
    agent=custom_agent, 
    tools=expanded_tools, 
    verbose=True, 
    memory=agent_memory
)

OutputParser берет необработанные выходные данные из базы LLM и форматирует их в соответствии с шаблоном подсказки. Это облегчает чтение и понимание конечного результата.

Шаг 7: Создание исполнителя агента

Наконец, пришло время собрать все воедино и создать агент-исполнитель. Исполнитель — это центральный компонент, объединяющий базу LLM, инструменты и анализатор выходных данных для облегчения конструктивных диалогов.

Вот как его инициализировать:

from langchain.agents import LLMSingleActionAgent
from langchain.executors import AgentExecutor
from langchain.memory import ConversationBufferWindowMemory

# List of tool names
tool_names = [tool.name for tool in expanded_tools]

# Create the custom agent
custom_agent = LLMSingleActionAgent(
    llm_chain=llm_chain, 
    output_parser=output_parser,
    stop=["\nObservation:"], 
    allowed_tools=tool_names
)

# Define the memory for the agent
agent_memory = ConversationBufferWindowMemory(k=2)

# Build the Agent Executor
agent_executor = AgentExecutor.from_agent_and_tools(
    agent=custom_agent, 
    tools=expanded_tools, 
    verbose=True, 
    memory=agent_memory
)

Поздравляем, ваш агент LLM теперь готов к разумному общению!

Заключение

В этом руководстве мы показали, как вы можете использовать LangChain для создания сложного агента LLM, способного использовать различные инструменты для предоставления детальных и точных ответов. От настройки вашей среды до создания исполнителя агента — мы провели вас через каждый шаг, чтобы создать агент, который может ориентироваться в сложных диалоговых средах.

Давайте рассмотрим пример того, как наш агент будет действовать в сложной дискуссии об этических последствиях искусственного интеллекта:

Мысль. Это сложная тема, требующая взвешенного понимания. Действие: База знаний

Исходные данные: «Каковы аргументы за и против этики ИИ?»

Наблюдение. Аргументы в пользу этики ИИ включают необходимость предотвращения предвзятости в системах ИИ, защиты конфиденциальности и обеспечения прозрачности принятия решений ИИ. Аргументы против связаны с подавлением инноваций, возможностью чрезмерного регулирования и трудностями определения универсальных этических стандартов.

Действие: Поиск

Исходные данные: «В каких примечательных случаях этика ИИ подвергалась сомнению?»

Наблюдение. Несколько случаев включают скандал с Cambridge Analytica, когда личные данные использовались для целевой политической рекламы, или полемику вокруг технологии распознавания лиц, которая может быть предвзятой и нарушать неприкосновенность частной жизни. Эти инциденты подчеркивают важность этики в ИИ. Окончательный ответ: этика ИИ — сложная область с аргументами с обеих сторон. Крайне важно рассмотреть эти точки зрения и недавние инциденты, прежде чем формировать мнение.

Создание агента ИИ — это итеративный процесс. Существует много возможностей для экспериментов с различными инструментами, настройки шаблона приглашения и тонкой настройки базы LLM в соответствии с вашими конкретными потребностями.