
[Inglés] | [中文]
Bot en cualquier cosa es un poderoso constructor de chatbot de IA que le permite construir chatbots rápidamente y ejecutarlos en cualquier lugar.
Los desarrolladores pueden construir y ejecutar un robot de diálogo inteligente seleccionando una conexión entre varios modelos grandes de IA y canales de aplicación con configuración ligera. Admite un cambio fácil entre múltiples rutas dentro de un solo proyecto. Esta arquitectura tiene una fuerte escalabilidad; Cada aplicación puede reutilizar las capacidades de modelo existentes, y cada nuevo modelo puede ejecutarse en todos los canales de aplicación.
Modelos:
Aplicaciones:
Admite sistemas Linux, MacOS y Windows, y Python debe instalarse. Se recomienda utilizar la versión de Python entre 3.7.1 y 3.10.
Clon el código del proyecto y las dependencias de instalación:
git clone https://github.com/zhayujie/bot-on-anything
cd bot-on-anything/
pip3 install -r requirements.txt El archivo de configuración principal es config.json , y un archivo de plantilla config-template.json se proporciona en el proyecto, que se puede copiar para generar el archivo config.json efectivo final:
cp config-template.json config.jsonCada modelo y canal tiene su propio bloque de configuración, que juntos forman un archivo de configuración completo. La estructura general es la siguiente:
{
" model " : {
" type " : " openai " , # Selected AI model
" openai " : {
# openAI configuration
}
},
" channel " : {
" type " : " slack " , # Channel to be integrated
" slack " : {
# slack configuration
},
" telegram " : {
# telegram configuration
}
}
} El archivo de configuración se divide en secciones model y channel en el nivel más externo. La sección del modelo es para la configuración del modelo, donde el type especifica qué modelo usar; La sección del canal contiene la configuración para los canales de aplicación, y el campo type especifica qué aplicación integrar.
Al usar, solo necesita cambiar el campo type en los bloques de configuración del modelo y canal para cambiar entre cualquier modelo y aplicación, conectando diferentes rutas. A continuación, se introducirá cada modelo y proceso de configuración de la aplicación y en ejecución.
Ejecute el siguiente comando en el directorio raíz del proyecto, siendo el canal predeterminado el terminal:
python3 app.py El modelo predeterminado es gpt-3.5-turbo . Para más detalles, consulte la documentación oficial. También es compatible con gpt-4.0 , solo modifique el parámetro de tipo de modelo.
pip3 install --upgrade openaiNota: La versión OpenAI debe estar por encima de
0.27.0. Si la instalación falla, primero puede actualizar PIP conpip3 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 : complete la OpenAI API KEY creada al registrar su cuenta.model : Nombre del modelo, actualmente admite gpt-3.5-turbo , gpt-4 , gpt-4-32k (la API GPT-4 aún no está abierta).proxy : la dirección del cliente proxy, consulte #56 para más detalles.character_desc : esta configuración guarda un texto que le dice a ChatGPT, y recordará este texto como su configuración; Puede personalizar cualquier personalidad para ello.max_history_num [opcional]: la longitud de memoria máxima de la conversación, excediendo esta longitud borrará la memoria anterior.{
" 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 : la clave para llamar al servicio Linkai, que se puede crear en la consola.app_code : El código para la aplicación o flujo de trabajo de Linkai, opcional, consulte la creación de aplicaciones.model : admite modelos comunes de fuentes nacionales e internacionales, consulte la lista de modelos. Se puede dejar en blanco y el modelo predeterminado de la aplicación se puede modificar en la plataforma Linkai. La aplicación que se inicia de forma predeterminada en la plantilla de configuración es el terminal, que no requiere configuración adicional. Puede iniciar el programa ejecutando python3 app.py directamente en el directorio del proyecto. Los usuarios interactúan con el modelo de diálogo a través de la entrada de la línea de comandos, y admite los efectos de respuesta de transmisión.

Colaborador: Regimenarsénico
Dependencias
pip3 install PyJWT flask flask_socketioConfiguración
" 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
}
} Ejecute localmente: después de ejecutar python3 app.py , acceda a http://127.0.0.1:80 .
Ejecutar en un servidor: después de la implementación, acceda http://public domain or IP:port .
Requisitos: un servidor y una cuenta de suscripción.
Instale la dependencia de Werobot:
pip3 install werobot " channel " : {
" type " : " wechat_mp " ,
" wechat_mp " : {
" token " : " YOUR TOKEN " , # Token value
" port " : " 8088 " # Port the program listens on
}
} Ejecute python3 app.py en el directorio del proyecto. Si el terminal muestra lo siguiente, indica una operación exitosa:
[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.
Vaya a la cuenta de suscripción personal en la plataforma oficial de WeChat y habilite la configuración del servidor:

Configuración de la dirección del servidor (URL) : si puede acceder al programa Python en el servidor a través de la URL configurada en el navegador (escucha predeterminada en el puerto 8088), indica que la configuración es válida. Dado que la cuenta de suscripción solo puede configurar los puertos 80/443, puede modificar la configuración para escuchar directamente en el puerto 80 (requiere permisos de sudo) o usar el reenvío de proxy inverso (como NGINX). Según la documentación oficial, puede completar la IP pública o el nombre de dominio aquí.
Configuración del token : debe ser consistente con el token en la configuración config.json .
Para obtener procesos de operación detallados, consulte la documentación oficial.
Después de que los usuarios sigan la cuenta de suscripción, pueden enviar mensajes.
Nota: Después de que los usuarios envíen mensajes, el backend de WeChat presionará a la dirección de URL configurada, pero si no hay respuesta dentro de los 5 segundos, la conexión se desconectará y volverá a intentar 3 veces. Sin embargo, la solicitud a la interfaz Operai a menudo lleva más de 5 segundos. En este proyecto, los métodos asíncronos y de almacenamiento en caché han optimizado el límite de tiempo de espera de 5 segundos a 15 segundos, pero exceder este tiempo aún no permitirá respuestas normales. Al mismo tiempo, cada vez que la conexión se desconecte después de 5 segundos, el marco web informará un error, que se optimizará más adelante.
Requisitos: un servidor y una cuenta de servicio certificada.
En la cuenta de servicio empresarial, el problema de tiempo de espera de 15 segundos de la cuenta de suscripción personal se resuelve primero accediendo de manera asincrónica a la interfaz OpenAI y luego presionando de manera proactiva al usuario a través de la interfaz de servicio al cliente. La configuración del modo de desarrollador de la cuenta de servicio es similar a la de la cuenta de suscripción. Para más detalles, consulte la documentación oficial.
La configuración config.json para la cuenta de servicio empresarial solo necesita cambiar el tipo a wechat_mp_service , pero el bloque de configuración aún reutiliza wechat_mp , y además, debe agregar dos elementos de configuración: app_id y 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
}
}Nota: La dirección IP del servidor debe configurarse en la "IP WhiteList"; De lo contrario, los usuarios no recibirán mensajes empujados de manera proactiva.
Requisitos: una PC o servidor (red nacional) y una cuenta QQ.
Ejecutar el BOT QQ requiere ejecutar adicionalmente un programa go-cqhttp , que es responsable de recibir y enviar mensajes QQ, mientras que nuestro programa bot-on-anything es responsable de acceder a OpenAI para generar contenido de diálogo.
Descargue el programa de máquina correspondiente desde la versión Go-CQHTTP, descomprima y coloque el archivo binario go-cqhttp en nuestro directorio bot-on-anything/channel/qq . Un archivo de configuración config.yml ya está preparado aquí; Solo necesita completar la configuración de la cuenta QQ (cuenta-uin).
Use AIOCQHTTP para interactuar con Go-CQHTTP, ejecute el siguiente comando para instalar la dependencia:
pip3 install aiocqhttp Simplemente cambie el type en el bloque de canal de configuración config.json a qq :
" channel " : {
" type " : " qq "
} Primero, vaya al directorio raíz del proyecto bot-on-anything y ejecute en la Terminal 1:
python3 app.py # This will listen on port 8080 En el segundo paso, abra el terminal 2, navegue al directorio donde se encuentra cqhttp , y ejecute:
cd channel/qq
./go-cqhttpNota:
protocol en el archivo device.json en el mismo directorio que GO-CQHTTP de 5 a 2, consulte este problema.Colaborador: Brucelt1993
6.1 Get token
Solicitar un bot de telegrama se puede encontrar fácilmente en Google; Lo importante es obtener la identificación de token del bot.
6.2 Instalación de dependencia
pip install pyTelegramBotAPI6.3 Configuración
" channel " : {
" type " : " telegram " ,
" telegram " :{
" bot_token " : " YOUR BOT TOKEN ID "
}
}Requisitos: un servidor y una cuenta de Gmail.
Colaborador: Simon
¡Siga la documentación oficial para crear una contraseña de aplicación para su cuenta de Google, configure como se muestra a continuación, luego saludos!
" channel " : {
" type " : " gmail " ,
" gmail " : {
" subject_keyword " : [ " bot " , " @bot " ],
" host_email " : " [email protected] " ,
" host_password " : " GMAIL ACCESS KEY "
}
}❉ Ya no requiere un servidor o IP pública
Colaborador: Amaoo
Dependencias
pip3 install slack_boltConfiguración
" channel " : {
" type " : " slack " ,
" slack " : {
" slack_bot_token " : " xoxb-xxxx " ,
" slack_app_token " : " xapp-xxxx "
}
}Establecer el alcance del token BOT - OAUTH & Permiso
Escriba el token OAuth del usuario de BOT en el archivo de configuración slack_bot_token .
app_mentions:read
chat:write
Habilitar el modo de socket - modo de socket
Si no ha creado un token de nivel de aplicación, se le solicitará que cree uno. Escriba el token creado en el archivo de configuración slack_app_token .
Subscripción de eventos (suscripciones de eventos): suscribirse a eventos BOT
app_mention
Documentación de referencia
https://slack.dev/bolt-python/tutorial/getting-started
Requisitos:
Dependencias
pip3 install requests flaskConfiguración
" 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
}
}Documentación de referencia :
Generar robot
Dirección: https://open-dev.dingtalk.com/fe/app#/corp/robot Agregue un robot, configure la IP saliente del servidor en la administración de desarrollo de desarrollo y la dirección de recepción del mensaje (la dirección externa en la configuración, como https://xx.xx.com:8081).
Dependencias
pip3 install requests flaskConfiguración
" 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
}
}Generar robot
Dirección: https://open.feishu.cn/app/
Requisitos: un servidor y una empresa certificada WeChat.
La configuración config.json para Enterprise WeChat solo necesita cambiar el tipo a wechat_com , con la URL del servidor de recepción del mensaje predeterminado: 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 "
}
}Nota: La dirección IP del servidor debe estar configurada en la lista "IP de confianza empresarial"; De lo contrario, los usuarios no recibirán mensajes empujados de manera proactiva.
Documentación de referencia :
clear_memory_commands : los comandos internos de diálogo para borrar activamente la memoria anterior, la matriz de cadenas puede personalizar los alias de comandos.