pip install -U bida
from bida import ChatLLM
llm = ChatLLM (
model_type = 'openai' , # 调用openai的chat模型
model_name = 'gpt-4' ) # 设定模型为:gpt-4,默认是gpt3.5
result = llm . chat ( "从1加到100等于多少?只计算奇数相加呢?" )
print ( result )
from bida import ChatLLM
llm = ChatLLM (
model_type = "baidu" , # 调用百度文心一言
stream_callback = ChatLLM . stream_callback_func ) # 使用默认的流式输出函数
llm . chat ( "你好呀,请问你是谁?" )
модельная компания | Тип модели | Название модели | Поддерживать ли | иллюстрировать |
---|---|---|---|---|
ОпенАИ | Чат | гпт-3.5, гпт-4 | √ | Поддерживает все модели gpt3.5 и gpt4. |
Завершение текста | текст-давинчи-003 | √ | Модель класса генерации текста | |
Вложения | встраивание текста-ada-002 | √ | векторизованная модель | |
Байду-Вэнь Синь Иян | Чат | Эрни-бот, Эрни-бот-турбо | √ | Модель коммерческого чата Baidu |
Вложения | встраивание_v1 | √ | Модель коммерческой векторизации Baidu | |
Размещенная модель | Различные модели с открытым исходным кодом | √ | Для различных моделей с открытым исходным кодом, размещенных на Baidu, настройте их самостоятельно, используя протокол доступа к моделям сторонних производителей Baidu. Подробную информацию см. в разделе доступа к модели ниже. | |
Alibaba Cloud-Tongyi Qianwen | Чат | qwen-v1, qwen-plus-v1, qwen-7b-чат-v1 | √ | Коммерческие модели Alibaba Cloud и чаты с открытым исходным кодом |
Вложения | встраивание текста-v1 | √ | Модель коммерческой векторизации Alibaba Cloud | |
Размещенная модель | Различные модели с открытым исходным кодом | √ | Для других типов моделей с открытым исходным кодом, размещенных в Alibaba Cloud, настройте их самостоятельно, используя протокол доступа к сторонней модели Alibaba Cloud. Подробную информацию см. в разделе доступа к модели ниже. | |
МиниМакс | Чат | абаб5, абаб5,5 | √ | Модель коммерческого чата MiniMax |
Чат Про | абаб5.5 | √ | Модель коммерческого чата MiniMax, использующая настраиваемый режим Chatcompletion pro, поддерживает сценарии разговоров с несколькими людьми и несколькими ботами, примеры разговоров, ограничения формата возврата, вызовы функций, плагины и другие функции. | |
Вложения | эмбо-01 | √ | Коммерческая векторная модель MiniMax | |
Спектр мудрости AI-ChatGLM | Чат | ChatGLM-Pro, стандартный, облегченный, символьныйглм | √ | Многовариантная коммерческая большая модель Zhipu AI |
Вложения | Встраивание текста | √ | Векторная модель коммерческого текста Zhipu AI | |
iFlytek-Спарк | Чат | СпаркДеск V1.5, V2.0 | √ | Большая когнитивная модель iFlytek Spark |
Вложения | встраивание | √ | Текстовая векторная модель iFlytek Spark | |
SenseTime-RiRiXin | Чат | нова-ptc-xl-v1, нова-ptc-xs-v1 | √ | SenseNova SenseTime ежедневная новая большая модель |
Байчуаньская разведка | Чат | байчуань-53b-v1.0.0 | √ | Большая модель Байчуань 53Б |
Tencent-Хуньюань | Чат | Тенсент Хунюань | √ | Большая модель Tencent Hunyuan |
Самостоятельно развертываемая модель с открытым исходным кодом | Чат, Завершение, Вложения | Различные модели с открытым исходным кодом | √ | При использовании моделей с открытым исходным кодом, развернутых с помощью FastChat и других развертываний, предоставляемый интерфейс веб-API соответствует OpenAI-совместимым RESTful API и может поддерживаться напрямую. Подробные сведения см. в главе о доступе к модели ниже. |
Уведомление :
Две технологии модели LLM и подсказки слова в AIGC очень новы и быстро развиваются. Теории, учебных пособий, инструментов, инженерных и других аспектов очень не хватает. Используемый стек технологий почти не пересекается с опытом нынешних основных разработчиков. :
Классификация | Текущее основное развитие | Подскажите проект | Разработка моделей, точная настройка моделей |
---|---|---|---|
язык разработки | Java, .Net, Javscript, ABAP и т. д. | Естественный язык, Питон | Питон |
инструменты разработки | Очень и зрело | никто | зрелый |
Порог развития | низший и зрелый | низкий, но очень незрелый | очень высокий |
технология разработки | ясный и устойчивый | Легко начать, но очень сложно добиться стабильного результата. | сложный и разнообразный |
Часто используемые методы | Объектно-ориентированный, база данных, большие данные | быстрая настройка, контекстное обучение, встраивание | Трансформатор, RLHF, точная настройка, LoRA |
Поддержка открытого исходного кода | богатый и зрелый | Очень запутанно на нижнем уровне | богатый, но незрелый |
стоимость разработки | Низкий | выше | очень высокий |
Разработчик | Богатый | Крайне скудный | очень скудный |
Разработать модель сотрудничества | Разработка по документам, предоставленным продакт-менеджером | Один человек или минималистская команда могут выполнять все операции от требований до доставки. | Разработано в соответствии с теоретическими направлениями исследований. |
В настоящее время почти все технологические компании, интернет-компании и компании, занимающиеся большими данными, работают в этом направлении, но более традиционные компании все еще находятся в замешательстве. Дело не в том, что традиционным предприятиям это не нужно, а в том, что: 1) у них нет технических кадровых резервов, поэтому они не знают, что делать 2) у них нет аппаратных резервов, и их нет; иметь возможность это сделать; 3) Степень цифровизации бизнеса низкая, а трансформация и модернизация AIGC имеют длительный цикл и медленные результаты.
В настоящее время в стране и за рубежом существует слишком много коммерческих моделей и моделей с открытым исходным кодом, и они развиваются очень быстро. Однако API-интерфейсы и объекты данных моделей различаются. новую версию), нам нужно прочитать документы разработки и изменить собственный код приложения, чтобы адаптировать его. Я считаю, что каждый разработчик приложений тестировал множество моделей и, должно быть, пострадал от этого.
Фактически, хотя возможности моделей различаются, режимы предоставления возможностей, как правило, одинаковы. Поэтому наличие инфраструктуры, которая может адаптироваться к большому количеству API-интерфейсов модели и обеспечивать унифицированный режим вызова, стало насущной необходимостью для многих разработчиков.
Прежде всего, Bida не призван заменить langchain, но его целевое позиционирование и концепции развития также сильно отличаются:
Классификация | Лангчейн | бида |
---|---|---|
целевая группа | Полное развитие толпы в направлении AIGC | Разработчики, которым срочно необходимо совместить AIGC с разработкой приложений. |
Поддержка модели | Поддерживает различные модели для локального или удаленного развертывания. | Поддерживаются только вызовы моделей, предоставляющие веб-API. В настоящее время большинство коммерческих моделей с открытым исходным кодом также могут предоставлять веб-API после развертывания с использованием таких платформ, как FastChat. |
рамная конструкция | Поскольку он предоставляет множество возможностей и очень сложную структуру, по состоянию на август 2023 года основной код содержит более 1700 файлов и 150 000 строк кода, а порог обучения высок. | Существует более десяти основных кодов и около 2000 строк кода. Код относительно легко изучить и изменить. |
Поддержка функций | Обеспечить полный охват различных моделей, технологий и областей применения по направлению AIGC. | В настоящее время он обеспечивает поддержку ChatCompletions, Completions, Embeddings, Function Call и других функций, таких как голос и изображение, которые будут выпущены в ближайшем будущем. |
Быстрый | Предоставляются шаблоны подсказок, но подсказки, используемые собственными функциями, встроены в код, что затрудняет отладку и модификацию. | Предоставляются шаблоны подсказок. В настоящее время встроенная функция для использования подсказки не предусмотрена. В будущем для облегчения настройки пользователя будет использоваться режим пост-загрузки на основе конфигурации. |
Разговор и память | Поддержка и предоставление нескольких методов управления памятью | Поддержка, поддержка сохранения диалога (сохраняется в DuckDB), память обеспечивает ограниченные возможности сеанса архивирования, а другие возможности могут быть расширены с помощью платформы расширения. |
Функция и плагин | Поддержка и предоставление богатых возможностей расширения, но эффект от использования зависит от собственных возможностей большой модели. | Совместимость с большими моделями, использующими спецификацию Function Call OpenAI. |
Агент и сеть | Поддержка и предоставление богатых возможностей расширения, но эффект от использования зависит от собственных возможностей большой модели. | Не поддерживается, мы планируем открыть еще один проект для его реализации или можем расширяться и развиваться самостоятельно на основе текущего фреймворка. |
Другие функции | Поддерживает множество других функций, таких как разделение документа (встраивание осуществляется после разделения, используется для реализации чатpdf и других подобных функций) | Других функций на данный момент нет. Если они будут добавлены, они будут реализованы путем открытия нового совместимого проекта. В настоящее время их можно реализовать, используя комбинацию возможностей, предоставляемых другими продуктами. |
Операционная эффективность | Многие разработчики сообщают, что это медленнее, чем прямой вызов API, и причина неизвестна. | Он лишь инкапсулирует вызывающий процесс и унифицирует вызывающий интерфейс, а производительность ничем не отличается от прямого вызова API. |
Являясь ведущим проектом с открытым исходным кодом в отрасли, langchain внес большой вклад в продвижение больших моделей и AGI. Мы также применили его в проекте. В то же время мы также использовали многие его модели и идеи при разработке. бида. Но langchain хочет быть большим и всеобъемлющим инструментом, что неизбежно приводит к множеству недостатков. Следующие статьи имеют схожие мнения: Max Woolf — китайский, Hacker News — китайский.
Популярная в кругу поговорка очень хорошо подводит итог: лангчейн — это учебник, который каждый выучит, но в конечном итоге выбросит.
Установите последнюю версию Bida из pip или pip3.
pip install -U bida
Клонировать код проекта из github в локальный каталог:
git clone https://github.com/pfzhou/bida.git
pip install -r requirements.txt
Измените файл в текущем корневом каталоге кода: расширение «.env.template» становится файлом переменной среды «.env» . Пожалуйста, настройте ключ модели, на которую вы подали заявку, согласно инструкциям в файле.
Обратите внимание : этот файл добавлен в список игнорирования и не будет передан на сервер git.
примеры1.Среда инициализации.ipynb
В следующем демонстрационном коде будут использоваться различные модели, поддерживаемые Bida. Измените и замените значение **[model_type]** в коде соответствующим названием компании-модели в соответствии с приобретенной вами моделью. Вы можете быстро переключаться между различными моделями. для опыта:
# 更多信息参看bidamodels*.json中的model_type配置
# openai
llm = ChatLLM ( model_type = "openai" )
# baidu
llm = ChatLLM ( model_type = "baidu" )
# baidu third models(llama-2...)
llm = ChatLLM ( model_type = "baidu-third" )
# aliyun
llm = ChatLLM ( model_type = "aliyun" )
# minimax
llm = ChatLLM ( model_type = "minimax" )
# minimax ccp
llm = ChatLLM ( model_type = "minimax-ccp" )
# zhipu ai
llm = ChatLLM ( model_type = "chatglm2" )
# xunfei xinghuo
llm = ChatLLM ( model_type = "xfyun" )
# senstime
llm = ChatLLM ( model_type = "senstime" )
# baichuan ai
llm = ChatLLM ( model_type = "baichuan" )
# tencent ai
llm = ChatLLM ( model_type = "tencent" )
Режим чата: ChatCompletion, текущий основной режим взаимодействия LLM, Bida поддерживает управление сеансами, сохранение данных и управление памятью.
from bida import ChatLLM
llm = ChatLLM ( model_type = 'baidu' )
result = llm . chat ( "你好呀,请问你是谁?" )
print ( result )
from bida import ChatLLM
# stream调用
llm = ChatLLM ( model_type = "baidu" , stream_callback = ChatLLM . stream_callback_func )
result = llm . chat ( "你好呀,请问你是谁?" )
from bida import ChatLLM
llm = ChatLLM ( model_type = "baidu" , stream_callback = ChatLLM . stream_callback_func )
result = llm . chat ( "你是一个服务助理,请简洁回答我的问题。我的名字是老周。" )
result = llm . chat ( "我的名字是?" )
Подробный код выше и дополнительные функциональные примеры можно найти в блокноте ниже:
примеры2.1.Режим чата.ipynb
Создайте чат-бота, используя градиент
Gradio — очень популярная платформа интерфейса обработки естественного языка.
Bida + grario может создать полезное приложение всего за несколько строк кода.
import gradio as gr
from bida import ChatLLM
llm = ChatLLM ( model_type = 'openai' )
def predict ( message , history ):
answer = llm . chat ( message )
return answer
gr . ChatInterface ( predict ). launch ()
Подробности см.: демо-версия чат-бота bida+gradio.
Режим завершения: Завершения или TextCompletions, режим взаимодействия LLM предыдущего поколения, поддерживает только одноразовые разговоры, не сохраняет записи чата, и каждый звонок представляет собой новое общение.
Обратите внимание: в статье OpenAI от 6 июля 2023 г. эта модель четко указано, что ее использование будет прекращено. Новые модели в основном не предоставляют соответствующих функций. Предполагается, что даже поддерживаемые модели будут следовать за OpenAI и, как ожидается, будут постепенно прекращены. будущее. .
from bida import TextLLM
llm = TextLLM ( model_type = "openai" )
result = llm . completion ( "你是一个服务助理,请简洁回答我的问题。我的名字是老周。" )
print ( result )
Подробности примера кода см.:
примеры2.2.Режим завершения.ipynb
Слово-подсказка Prompt — самая важная функция в большой языковой модели. Оно подрывает традиционную объектно-ориентированную модель разработки и преобразует ее в: Prompt project . Эта платформа реализована с использованием «Prompt Templete», который поддерживает такие функции, как замена тегов, установка разных слов подсказки для нескольких моделей и автоматическая замена при взаимодействии модели.
PromptTemplate_Text в настоящее время предоставляется: поддерживает использование строкового текста для создания шаблонов запросов, Bida также поддерживает гибкие пользовательские шаблоны и планирует в будущем предоставить возможность загружать шаблоны из json и баз данных.
Подробный пример кода см. в следующем файле:
примеры2.3.Подсказка word.ipynb
Важные инструкции в подсказках
В целом рекомендуется, чтобы слова-подсказки имели структуру из трех абзацев: определение ролей, пояснение задач и указание контекста (соответствующая информация или примеры) . Метод написания можно использовать в примерах.
Серия курсов Эндрю Нг https://learn.deeplearning.ai/login, китайская версия, устный перевод
кулинарная книга openai https://github.com/openai/openai-cookbook
Документация Microsoft Azure: введение в проектирование наконечников, технология проектирования наконечников
Самое популярное руководство по быстрому проектированию на Github, китайская версия
Вызов функций — это функция, выпущенная OpenAI 13 июня 2023 года. Мы все знаем, что данные, обученные ChatGPT, основаны на данных до 2021 года. Если вы зададите некоторые связанные вопросы в режиме реального времени, мы не сможем вам ответить, и функция вызовы позволяют в режиме реального времени получать сетевые данные, например, проверять прогноз погоды, проверять акции, рекомендовать последние фильмы и т. д.
Технология внедрения является наиболее важной технологией для реализации оперативного обучения в контексте. По сравнению с предыдущим поиском по ключевым словам, это еще один шаг вперед.
Примечание . Встраивание данных из разных моделей не является универсальным, поэтому для внедрения вопроса во время поиска необходимо использовать одну и ту же модель.
Название модели | Выходные размеры | Количество пакетных записей | Лимит одного текстового токена |
---|---|---|---|
ОпенАИ | 1536 | Без ограничений | 8191 |
Байду | 384 | 16 | 384 |
Али | 1536 | 10 | 2048 |
МиниМакс | 1536 | Без ограничений | 4096 |
Спектр мудрости ИИ | 1024 | Одинокий | 512 |
iFlytek Спарк | 1024 | Одинокий | 256 |
Примечание. Интерфейс внедрения bida поддерживает пакетную обработку. Если лимит пакетной обработки модели превышен, она будет автоматически обработана пакетами и возвращена вместе. Если содержимое одного фрагмента текста превышает ограниченное количество токенов, в зависимости от логики модели некоторые сообщат об ошибке, а некоторые ее обрежут.
Подробные примеры см. в разделе example2.6.Embeddingsembedding model.ipynb.
├─bida # bida框架主目录
│ ├─core # bida框架核心代码
│ ├─functions # 自定义function文件
│ ├─ *.json # function定义
│ ├─ *.py # 对应的调用代码
│ ├─models # 接入模型文件
│ ├─ *.json # 模型配置定义:openai.json、baidu.json等
│ ├─ *_api.py # 模型接入代码:openai_api.py、baidu_api.py等
│ ├─ *_sdk.py # 模型sdk代码:baidu_sdk.py等
│ ├─prompts # 自定义prompt模板文件
│ ├─*.py # 框架其他代码文件
├─docs # 帮助文档
├─examples # 演示代码、notebook文件和相关数据文件
├─test # pytest测试代码
│ .env.template # .env的模板
│ LICENSE # MIT 授权文件
│ pytest.ini # pytest配置文件
│ README.md # 本说明文件
│ requirements.txt # 相关依赖包
Мы надеемся адаптироваться к большему количеству моделей и приветствуем ваши ценные мнения, чтобы вместе предоставлять разработчикам более качественные продукты!