В этой статье мы узнаем, как создать собственный агент, использующий LLM с открытым исходным кодом (llama3.1), который запускается локально на нашем ПК. Мы также будем использовать Ollama и LangChain.
Для установки Ollama следуйте инструкциям в зависимости от типа вашей ОС в README GitHub:
https://github.com/ollama/ollama
Я использую компьютер под управлением Linux, поэтому я собираюсь запустить следующую команду в своем терминале:
curl -fsSL https://ollama.com/install.sh | sh
Получите доступную модель LLM с помощью следующей команды:
ollama pull llama3.1
Будет загружена версия модели с тегами по умолчанию. Обычно значение по умолчанию указывает на последнюю модель с наименьшим размером параметра. В данном случае это будет модель llama3.1:8b.
Чтобы загрузить другую версию модели, вы можете перейти по адресу: https://ollama.com/library/llama3.1 и выбрать версию для установки, а затем запустить команду ollama pull с моделью и номером ее версии. . Пример: ollama pull llama3.1:70b
На Mac модели будут загружены в ~/.ollama/models
В Linux (или WSL) модели будут храниться в /usr/share/ollama/.ollama/models
Выполните следующую команду, чтобы запустить ollama без запуска настольного приложения.
ollama serve
Все модели автоматически обслуживаются на локальном хосте: 11434
Создайте новую папку на своем компьютере, а затем откройте ее с помощью редактора кода, например VS Code.
Откройте терминал. Используйте следующую команду, чтобы создать виртуальную среду .venv и активировать ее:
python3 -m venv .venv
source .venv/bin/activate
Выполните следующую команду, чтобы установить langchain и langchain-ollama:
pip install -U langchain langchain-ollama
Приведенная выше команда установит или обновит пакеты LangChain и LangChain-Ollama в Python. Флаг -U гарантирует, что будут установлены последние версии этих пакетов, заменяя любые старые версии, которые могут уже присутствовать.
Создайте файл Python, например: main.py, и добавьте следующий код:
from langchain_ollama import ChatOllama from langchain.agents import tool from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain.agents.format_scratchpad.openai_tools import ( format_to_openai_tool_messages, ) from langchain.agents import AgentExecutor from langchain.agents.output_parsers.openai_tools import OpenAIToolsAgentOutputParser llm = ChatOllama( model="llama3.1", temperature=0, verbose=True ) @tool def get_word_length(word: str) -> int: """Returns the length of a word.""" return len(word) tools = [get_word_length] prompt = ChatPromptTemplate.from_messages( [ ( "system", "You are very powerful assistant", ), ("user", "{input}"), MessagesPlaceholder(variable_name="agent_scratchpad"), ] ) llm_with_tools = llm.bind_tools(tools) agent = ( { "input": lambda x: x["input"], "agent_scratchpad": lambda x: format_to_openai_tool_messages( x["intermediate_steps"] ), } | prompt | llm_with_tools | OpenAIToolsAgentOutputParser() ) # Create an agent executor by passing in the agent and tools agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True) result = agent_executor.invoke({"input": "How many letters in the word educa"}) if result: print(f"[Output] --> {result['output']}") else: print('There are no result..')
Приведенный выше фрагмент кода настраивает агент LangChain с использованием модели ChatOllama (llama3.1) для обработки пользовательского ввода и использования специального инструмента, вычисляющего длину слова. Он определяет шаблон приглашения для агента, привязывает инструмент к языковой модели и создает агент, который обрабатывает входные данные и форматирует промежуточные шаги. Наконец, он создает AgentExecutor для вызова агента с определенными входными данными. Мы передаем простой вопрос «Сколько букв в слове образование», а затем печатаем результат или указываем, если результат не найден.
При запуске мы получаем следующий результат:
> Entering new AgentExecutor chain... Invoking: `get_word_length` with `{'word': 'educa'}` 5The word "educa" has 5 letters. > Finished chain. [Output] --> The word "educa" has 5 letters.
Вы видите, что агент использовал модель (llama3.1) для правильного вызова инструмента и получения количества букв в слове.
Спасибо, что прочитали.
Проверьте репозиторий Ollama здесь: https://github.com/ollama/ollama
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3