Полное руководство AutoGen и загрузка локального примера LLM
Полное руководство AutoGen и загрузка локального примера LLM

Autogen — это превосходная система искусственного интеллекта, которая может создавать несколько агентов искусственного интеллекта, которые могут сотрудничать для выполнения задач, включая автоматическую генерацию кода и эффективное выполнение задач.

в этой статье,Присмотримся к Autogen,И познакомьте, как сделать AutoGen Используйте местный LLM.

AutoGen

Autogen может настроить несколько агентов искусственного интеллекта, которые работают вместе для достижения конкретных целей. Следующие скриншоты взяты из официального блога Microsoft.

Создайте среду с помощью conda:

Язык кода:javascript
копировать
 conda create -n pyautogen python=3.10  
 conda activate pyautogen

AutoGenнуждатьсяPythonВерсия>= 3.8. Его можно установить из pip:

Язык кода:javascript
копировать
 pip install pyautogen

Отредактируйте скрипт Python (app.py), импортируйте Autogen и настройте конфигурацию. Эта конфигурация включает в себя определение модели, которую вы хотите использовать (например, GPT 3.5 Turbo), и предоставление ключа API.

В настоящее время AutoGen может использовать только API OpenAI, поэтому мы расскажем, как использовать местный LLM, позже.

Можно определить несколько агентов для выполнения разных ролей или задач. Например, ниже созданы 2 роли.

Язык кода:javascript
копировать
 autogen.AssistantAgent(assistantname="CTO",Illm_config=llm_config)
 autogen.AssistantAgent(assistantname="CEO", Illm_config=llm_config)

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

Затем агент начнет выполнять задачи в соответствии с инструкциями. Агент Assistant отвечает результатами или фрагментами кода.

Используйте местный LLM

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

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

Язык кода:javascript
копировать
 git clone https://github.com/lm-sys/FastChat.git
 cd FastChat

ChatGLM-6B — это открытая двуязычная языковая модель, основанная на структуре General Language Model (GLM) и имеющая 6,2 миллиарда параметров. ChatGLM2-6B — продукт второго поколения.

Язык кода:javascript
копировать
 git clone https://huggingface.co/THUDM/chatglm2-6b

После завершения загрузки вы можете использовать его. Сначала запустите контроллер:

Язык кода:javascript
копировать
 python -m fastchat.serve.controller

Затем запустите рабочий поток модели.

Язык кода:javascript
копировать
 python -m fastchat.serve.model_worker --model-path chatglm2-6b

Наконец API:

Язык кода:javascript
копировать
 python -m fastchat.serve.openai_api_server --host localhost --port 8000

ПРИМЕЧАНИЕ. Если вы столкнулись с такой ошибкой

Язык кода:javascript
копировать
 /root/anaconda3/envs/fastchat/lib/python3.9/runpy.py:197 in _run_module_as_main │
 │ │
 │ 194 │ main_globals = sys.modules["main"].dict │
 │ 195 │ if alter_argv: │
 │ 196 │ │ sys.argv[0] = mod_spec.origin │
 │ ❱ 197 │ return _run_code(code, main_globals, None, │
 │ 198 │ │ │ │ │ "main", mod_spec) │
 │ 199 │
 │ 200 def run_module(mod_name, init_globals=None, │

Закомментирование всех строк, содержащих Finish_reason в fastchat/protocol/api_protocol.py и fastchat/protocol/openai_api_protocol.py, решит проблему. Модифицированный код выглядит следующим образом:

Язык кода:javascript
копировать
 class CompletionResponseChoice(BaseModel):
     index: int
     text: str
     logprobs: Optional[int] = None
     # finish_reason: Optional[Literal["stop", "length"]]
 
 class CompletionResponseStreamChoice(BaseModel):
     index: int
     text: str
     logprobs: Optional[float] = None
     # finish_reason: Optional[Literal["stop", "length"]] = None

Используя приведенную ниже конфигурацию, autogen.oai.Completion и autogen.oai.ChatCompletion могут напрямую обращаться к модели.

Язык кода:javascript
копировать
 from autogen import oai
 
 # create a text completion request
 response = oai.Completion.create(
     config_list=[
         {
             "model": "chatglm2-6b",
             "api_base": "http://localhost:8000/v1",
             "api_type": "open_ai",
             "api_key": "NULL", # just a placeholder
         }
     ],
     prompt="Hi",
 )
 print(response)
 
 # create a chat completion request
 response = oai.ChatCompletion.create(
     config_list=[
         {
             "model": "chatglm2-6b",
             "api_base": "http://localhost:8000/v1",
             "api_type": "open_ai",
             "api_key": "NULL",
         }
     ],
     messages=[{"role": "user", "content": "Hi"}]
 )
 print(response)

Несколько моделей также могут использоваться локально:

Язык кода:javascript
копировать
 python -m fastchat.serve.multi_model_worker \
     --model-path lmsys/vicuna-7b-v1.3 \
     --model-names vicuna-7b-v1.3 \
     --model-path chatglm2-6b \
     --model-names chatglm2-6b

Тогда код вывода будет следующим (обратите внимание, что вам нужно несколько карт или достаточно видеопамяти):

Язык кода:javascript
копировать
 from autogen import oai
 
 # create a chat completion request
 response = oai.ChatCompletion.create(
     config_list=[
         {
             "model": "chatglm2-6b",
             "api_base": "http://localhost:8000/v1",
             "api_type": "open_ai",
             "api_key": "NULL",
         },
         {
             "model": "vicuna-7b-v1.3",
             "api_base": "http://localhost:8000/v1",
             "api_type": "open_ai",
             "api_key": "NULL",
         }
     ],
     messages=[{"role": "user", "content": "Hi"}]
 )
 print(response)

Подвести итог

Агенты Autogen могут выполнять код, генерировать отчеты и автоматизировать задачи по мере необходимости. Они могут эффективно работать вместе, экономя время и энергию, а также мы рассказали, как использовать их локально, чтобы их можно было тестировать локально без необходимости использования API OpenAI.

boy illustration
Java перехватывает строку после определенного символа_java, как перехватить строку
boy illustration
Давайте кратко поговорим о технологии копирования на записи.
boy illustration
Выполнение собственных условий SQL-запроса в MyBatis Plus
boy illustration
Напоминание о выпуске общедоступной учетной записи WeChat (интерфейс сообщения шаблона общедоступной учетной записи WeChat)
boy illustration
5 шагов для установки среды протокола
boy illustration
Наиболее полные коды состояния HTTP
boy illustration
На основе языка Go мы шаг за шагом научим вас внедрять структуру системы управления серверной частью.
boy illustration
Эффективное управление журналами с помощью Spring Boot и Log4j2: подробное объяснение конфигурации
boy illustration
Что делать, если telnet не является внутренней или внешней командой [легко понять]
boy illustration
php-объект для анализа json_php json
boy illustration
Введение в принцип запуска Springboot, процесс запуска и механизм запуска.
boy illustration
Высокоуровневые операции Mongo, если данные не существуют, вставка и обновление, если они существуют (pymongo)
boy illustration
Проектирование и внедрение системы управления электронной коммерцией на базе Vue и SpringBoot.
boy illustration
Статья длиной в 9000 слов знакомит вас с процессом запуска SpringBoot — самым подробным процессом запуска SpringBoot в истории — с изображениями и текстом.
boy illustration
Как настроить размер экрана в PR. Учебное пособие по настройке размера видео в PR [подробное объяснение]
boy illustration
Элегантный и мощный: упростите операции ElasticSearch с помощью easy-es
boy illustration
Проект аутентификации по микросервисному токену: концепция и практика
boy illustration
【Java】Решено: org.springframework.http.converter.HttpMessageNotWritableException.
boy illustration
Изучите Kimi Smart Assistant: как использовать сверхдлинный текст, чтобы открыть новую сферу эффективной обработки информации
boy illustration
Начало работы с Docker: использование томов данных и монтирования файлов для хранения и совместного использования данных
boy illustration
Использование Python для реализации автоматической публикации статей в публичном аккаунте WeChat
boy illustration
Разберитесь в механизме и принципах взаимодействия потребителя и брокера Kafka в одной статье.
boy illustration
Spring Boot — использование Resilience4j-Circuitbreaker для реализации режима автоматического выключателя_предотвращения каскадных сбоев
boy illustration
13. Springboot интегрирует Protobuf
boy illustration
Примечание. Инструмент управления батареями Dell Dell Power Manager
boy illustration
Общая интерпретация класса LocalDate [java]
boy illustration
[Базовые знания ASP.NET Core] -- Веб-API -- Создание и настройка веб-API (1)
boy illustration
Настоящий бой! Подключите Passkey к своему веб-сайту для безопасного входа в систему без пароля.
boy illustration
Руководство по настройке Nginx: как найти, интерпретировать и оптимизировать настройки Nginx в Linux
boy illustration
Typecho отображает использование памяти сервера