
[Английский] | [中文]
Bot On Comyly - это мощный сборщик чат -ботов, который позволяет быстро создавать чат -ботов и запускать их где угодно.
Разработчики могут создавать и запускать интеллектуального робота диалога, выбрав соединение между различными крупными моделями ИИ и каналами приложений с легкой конфигурацией. Он поддерживает легкое переключение между несколькими путями в пределах одного проекта. Эта архитектура имеет сильную масштабируемость; Каждое приложение может повторно использовать существующие возможности модели, и каждая новая модель может работать на всех каналах приложения.
Модели:
Приложения:
Поддерживает системы Linux, MacOS и Windows, и Python должен быть установлен. Рекомендуется использовать версию Python между 3,7,1 и 3.10.
Клонировать код проекта и установить зависимости:
git clone https://github.com/zhayujie/bot-on-anything
cd bot-on-anything/
pip3 install -r requirements.txt Файл конфигурации CORE-это config.json config.json и в проекте представлен config-template.json файла файла шаблона.
cp config-template.json config.jsonКаждая модель и канал имеет свой собственный блок конфигурации, который вместе образуют полный файл конфигурации. Общая структура заключается в следующем:
{
" model " : {
" type " : " openai " , # Selected AI model
" openai " : {
# openAI configuration
}
},
" channel " : {
" type " : " slack " , # Channel to be integrated
" slack " : {
# slack configuration
},
" telegram " : {
# telegram configuration
}
}
} Файл конфигурации разделен на разделы model и channel на самом внешнем уровне. Раздел модели предназначен для конфигурации модели, где type указывает, какую модель использовать; Раздел канала содержит конфигурацию для каналов приложения, а в поле type указывается, какое приложение для интеграции.
При использовании вам нужно только изменить поле type под блоками конфигурации модели и канала, чтобы переключаться между любой моделью и приложением, подключая различные пути. Ниже будут представлены каждая модель и конфигурация приложения и процесс запуска.
Запустите следующую команду в каталоге Project Root, причем канал по умолчанию является терминалом:
python3 app.py Модель по умолчанию- gpt-3.5-turbo . Для получения подробной информации обратитесь к официальной документации. Он также поддерживает gpt-4.0 , просто измените параметр типа модели.
pip3 install --upgrade openaiПРИМЕЧАНИЕ. Версия Openai должна быть выше
0.27.0. Если установка не сработает, вы можете сначала обновить PIP с помощьюpip3 install --upgrade pip.
{
" model " : {
" type " : " chatgpt " ,
" openai " : {
" api_key " : " YOUR API KEY " ,
" model " : " gpt-3.5-turbo " , # Model name
" proxy " : " http://127.0.0.1:7890 " , # Proxy address
" character_desc " : " You are ChatGPT, a large language model trained by OpenAI, aimed at answering and solving any questions people have, and can communicate in multiple languages. When asked who you are, you should also tell the questioner that entering #clear_memory can start a new topic exploration. Entering draw xx can create a picture for you. " ,
" conversation_max_tokens " : 1000, # Maximum number of characters in the reply, total for input and output
" temperature " :0.75, # Entropy, between [0,1], the larger the value, the more random the selected candidate words, the more uncertain the reply, it is recommended to use either this or the top_p parameter, the greater the creativity task, the better, the smaller the precision task
" top_p " :0.7, # Candidate word list. 0.7 means only considering the top 70% of candidate words, it is recommended to use either this or the temperature parameter
" frequency_penalty " :0.0, # Between [-2,2], the larger this value, the more it reduces the repetition of words in the model's output, leaning towards producing different content
" presence_penalty " :1.0, # Between [-2,2], the larger this value, the less restricted by the input, encouraging the model to generate new words not present in the input, leaning towards producing different content
}
}api_key : Заполните OpenAI API KEY созданный при регистрации вашей учетной записи.model : название модели, в настоящее время поддерживает gpt-3.5-turbo , gpt-4 , gpt-4-32k (API GPT-4 еще не открыт).proxy : адрес прокси -клиента, см. № 56 для получения подробной информации.character_desc : Эта конфигурация сохраняет часть текста, который вы говорите в CHATGPT, и она запомнит этот текст как его настройку; Вы можете настроить любую личность для этого.max_history_num [необязательно]: максимальная длина памяти разговора, превышение этой длины очистит предыдущую память.{
" model " : {
" type " : " linkai " ,
" linkai " : {
" api_key " : " " ,
" api_base " : " https://api.link-ai.tech " ,
" app_code " : " " ,
" model " : " " ,
" conversation_max_tokens " : 1000,
" temperature " :0.75,
" top_p " :0.7,
" frequency_penalty " :0.0,
" presence_penalty " :1.0,
" character_desc " : " You are an intelligent assistant. "
},
}api_key : ключ для вызова службы Linkai, который может быть создан в консоли.app_code : код для приложения или рабочего процесса Linkai, необязательно, см. В создании приложения.model : поддерживает общие модели как из внутренних, так и международных источников, см. Список моделей. Его можно оставить пустым, и модель по умолчанию приложения может быть изменена на платформе Linkai. Приложение, которое начинается по умолчанию в шаблоне конфигурации, является терминалом, которая не требует дополнительной конфигурации. Вы можете начать программу, выполнив python3 app.py непосредственно в каталоге проекта. Пользователи взаимодействуют с моделью диалога с помощью ввода командной строки, и это поддерживает эффекты потокового отклика.

Автор: режим
Зависимости
pip3 install PyJWT flask flask_socketioКонфигурация
" channel " : {
" type " : " http " ,
" http " : {
" http_auth_secret_key " : " 6d25a684-9558-11e9-aa94-efccd7a0659b " , // JWT authentication secret key
" http_auth_password " : " 6.67428e-11 " , // Authentication password, just for personal use, a preliminary defense against others scanning ports and DDOS wasting tokens
" port " : " 80 " // Port
}
} Запустите локально: после запуска python3 app.py , доступ к http://127.0.0.1:80 .
Запустите на сервере: после развертывания доступ http://public domain or IP:port .
Требования: сервер и учетная запись подписки.
Установите зависимость Werobot:
pip3 install werobot " channel " : {
" type " : " wechat_mp " ,
" wechat_mp " : {
" token " : " YOUR TOKEN " , # Token value
" port " : " 8088 " # Port the program listens on
}
} Запустите python3 app.py в каталоге проекта. Если терминал отображает следующее, это указывает на успешную работу:
[INFO][2023-02-16 01:39:53][app.py:12] - [INIT] load config: ...
[INFO][2023-02-16 01:39:53][wechat_mp_channel.py:25] - [WX_Public] Wechat Public account service start!
Bottle v0.12.23 server starting up (using AutoServer())...
Listening on http://127.0.0.1:8088/
Hit Ctrl-C to quit.
Перейдите в учетную запись личной подписки на официальной платформе WeChat и включите конфигурацию сервера:

Конфигурация адреса сервера (URL) : Если вы можете получить доступ к программе Python на сервере через настроенный URL -адрес в браузере (прослушивание по умолчанию на порту 8088), это указывает на то, что конфигурация действительна. Поскольку учетная запись подписки может настраивать только порты 80/443, вы можете изменить конфигурацию для прослушивания непосредственно на порту 80 (требует разрешений SUDO) или использовать перенаправление обратного прокси (например, NGINX). Согласно официальной документации, вы можете заполнить здесь публичное IP или доменное имя.
Конфигурация токена : должна соответствовать токену в конфигурации config.json .
Для получения подробных процессов работы см. В официальной документации.
После того, как пользователи следуют учетной записи подписки, они могут отправлять сообщения.
ПРИМЕЧАНИЕ. После того, как пользователи отправляют сообщения, бэкэнд WeChat будет выдвигаться на настроенный адрес URL -адреса, но если в течение 5 секунд нет ответа, соединение будет отключено, и оно будет повторно 3 раза. Тем не менее, запрос на интерфейс OpenAI часто занимает более 5 секунд. В этом проекте асинхронные и кэширующие методы оптимизировали 5-секундный ограничение тайм-аута до 15 секунд, но превышение этого времени все равно не позволит нормальным ответам. В то же время, каждый раз, когда соединение отключается через 5 секунд, веб -структура будет сообщать об ошибке, которая будет оптимизирована позже.
Требования: сервер и сертифицированная учетная запись обслуживания.
В учетной записи сервиса Enterprise 15-секундная выпуск тайм-аута личной подписки решается первым асинхронно доступа к интерфейсу OpenAI, а затем активно выдвигает пользователя через интерфейс обслуживания клиентов. Конфигурация режима разработчика учетной записи службы аналогична конструкции учетной записи подписки. Для получения подробной информации обратитесь к официальной документации.
Конфигурация config.json для учетной записи корпоративной службы должна только изменить тип на wechat_mp_service , но блок конфигурации по -прежнему повторно использует wechat_mp , и, кроме того, вам необходимо добавить два элемента конфигурации: app_id и app_secret .
" channel " : {
" type " : " wechat_mp_service " ,
" wechat_mp " : {
" token " : " YOUR TOKEN " , # Token value
" port " : " 8088 " , # Port the program listens on
" app_id " : " YOUR APP ID " , # App ID
" app_secret " : " YOUR APP SECRET " # App secret
}
}Примечание. IP -адрес сервера должен быть настроен в «IP Whitelist»; В противном случае пользователи не будут получать активно выдвинутые сообщения.
Требования: ПК или сервер (внутренняя сеть) и учетная запись QQ.
Запуск бота QQ требует дополнительно для запуска программы go-cqhttp , которая отвечает за получение и отправку сообщений QQ, в то время как наша программа bot-on-anything отвечает за доступ к OpenAI для создания контента диалога.
Загрузите соответствующую машинную программу из выпуска GO-CQHTTP, разкауте ее и поместите двоичный файл go-cqhttp в наш каталог bot-on-anything/channel/qq . Файл конфигурации config.yml уже подготовлен здесь; Вам нужно только заполнить конфигурацию учетной записи QQ (Account-UIN).
Используйте AIOCQHTTP для взаимодействия с GO-CQHTTP, выполните следующую команду для установки зависимости:
pip3 install aiocqhttp Просто измените type в блоке канала файла конфигурации config.json на qq :
" channel " : {
" type " : " qq "
} Во-первых, перейдите в корневой каталог проекта bot-on-anything и запустите в терминале 1:
python3 app.py # This will listen on port 8080 На втором этапе, открытый терминал 2, перейдите к каталогу, где находится cqhttp , и запустите:
cd channel/qq
./go-cqhttpПримечание:
protocol в файле device.json в том же каталоге, что и GO-CQHTTP с 5 на 2, см. В этом вопросе.Автор: Brucelt1993
6.1 Получить токен
Подача заявки на бот Telegram можно легко найти в Google; Важно получить идентификатор токена бота.
6.2 Установка зависимостей
pip install pyTelegramBotAPI6.3 Конфигурация
" channel " : {
" type " : " telegram " ,
" telegram " :{
" bot_token " : " YOUR BOT TOKEN ID "
}
}Требования: сервер и учетная запись Gmail.
Автор: Саймон
Следуйте официальной документации, чтобы создать пароль приложения для вашей учетной записи Google, настраивайте, как ниже, а затем ура !!!
" channel " : {
" type " : " gmail " ,
" gmail " : {
" subject_keyword " : [ " bot " , " @bot " ],
" host_email " : " [email protected] " ,
" host_password " : " GMAIL ACCESS KEY "
}
}❉ больше не требует сервера или публичного IP
Автор: Amaoo
Зависимости
pip3 install slack_boltКонфигурация
" channel " : {
" type " : " slack " ,
" slack " : {
" slack_bot_token " : " xoxb-xxxx " ,
" slack_app_token " : " xapp-xxxx "
}
}Установите применение токена бота - OAuth & разрешение
Запишите токен пользователя BOT OAuth в файл конфигурации slack_bot_token .
app_mentions:read
chat:write
Включить режим сокета - режим сокета
Если вы не создали токен на уровне приложения, вам будет предложено создать его. Запишите созданный токен в файл конфигурации slack_app_token .
Подписка на события (подписка на события) - подписаться на мероприятия бота
app_mention
Справочная документация
https://slack.dev/bolt-python/tutorial/getting-started
Требования:
Зависимости
pip3 install requests flaskКонфигурация
" channel " : {
" type " : " dingtalk " ,
" dingtalk " : {
" image_create_prefix " : [ " draw " , " draw " , " Draw " ],
" port " : " 8081 " , # External port
" dingtalk_token " : " xx " , # Access token of the webhook address
" dingtalk_post_token " : " xx " , # Verification token carried in the header when DingTalk posts back messages
" dingtalk_secret " : " xx " # Security encryption signature string in the group robot
}
}Справочная документация :
Генерировать робота
Адрес: https://open-dev.dingtalk.com/fe/app#/corp/robot Добавьте робот, установите исходящий IP-адрес сервера в управление разработкой и адрес получения сообщения (внешний адрес в конфигурации, такой как https://xx.xx.com:8081).
Зависимости
pip3 install requests flaskКонфигурация
" channel " : {
" type " : " feishu " ,
" feishu " : {
" image_create_prefix " : [
" draw " ,
" draw " ,
" Draw "
],
" port " : " 8082 " , # External port
" app_id " : " xxx " , # Application app_id
" app_secret " : " xxx " , # Application Secret
" verification_token " : " xxx " # Event subscription Verification Token
}
}Генерировать робота
Адрес: https://open.feishu.cn/app/
Требования: сервер и сертифицированное предприятие WeChat.
Конфигурация config.json для Enterprise WeChat должна только изменить тип на wechat_com , с URL -адресом сервера получения сообщения по умолчанию: http: // ip: 8888/weChat.
" channel " : {
" type " : " wechat_com " ,
" wechat_com " : {
" wechat_token " : " YOUR TOKEN " , # Token value
" port " : " 8888 " , # Port the program listens on
" app_id " : " YOUR APP ID " , # App ID
" app_secret " : " YOUR APP SECRET " , # App secret
" wechat_corp_id " : " YOUR CORP ID " ,
" wechat_encoding_aes_key " : " YOUR AES KEY "
}
}ПРИМЕЧАНИЕ. IP -адрес сервера должен быть настроен в списке «Доверенный IP Enterprise; В противном случае пользователи не будут получать активно выдвинутые сообщения.
Справочная документация :
clear_memory_commands : Внутренние команды диалога Для активной очистки предыдущей памяти массив строк может настраивать псевдонимы команд.