English | 简体中文 | 繁體中文 | 日本語 | Español | Français | Русский | Deutsch
Bienvenue dans Telegram GPT Worker ! 👋 C'est un bot Telegram efficace développé en TypeScript. Il prend en charge plusieurs langues et modèles d'IA, déployé sur Cloudflare Workers pour offrir aux utilisateurs une expérience rapide et évolutive.
- 🧠 Support Multi-modèles : Intègre OpenAI, Google Gemini, Anthropic Claude, Groq et Azure OpenAI.
- 🔗 Support des modèles compatibles avec OpenAI : Conçu spécialement pour les systèmes de gestion et de distribution d'interfaces de modèles d'IA tels que One API et New API, prenant en charge la récupération automatique des listes de modèles.
- 💬 Conversation Intelligente : Capacité de mémoire contextuelle pour des dialogues fluides.
- 🎨 Génération d'Images : Crée des images à partir de descriptions textuelles avec DALL·E et Cloudflare Flux.
- 🖼️ Analyse d'Images : Analyse intelligente des images téléchargées par les utilisateurs via OpenAI ou Google Gemini.
- 🌍 Support Multilingue : Fonctionnalité i18n intégrée, prend en charge 8 langues.
- 🔒 Gestion des Droits d'Utilisateur : Contrôle d'accès via liste blanche pour une sécurité accrue.
- ☁️ Déploiement Haute Performance : Utilise l'edge computing de Cloudflare Workers pour des réponses rapides.
- 🗄️ Gestion Efficace des Données : Utilise Redis pour le cache et la gestion des données.
- 🔧 Optimisation des Prompts Flux : Fonction optionnelle pour optimiser les prompts de génération d'images via une API externe.
Avant de commencer, assurez-vous d'avoir :
- Un compte Cloudflare
- Un compte Telegram et un Token de Bot
- Une base de données Upstash Redis (avec la fonction Eviction activée)
- Au moins une clé API d'un service IA
- Clonez le dépôt du projet
- Configurez les variables d'environnement nécessaires
- Déployez sur Cloudflare Workers
- Configurez le Webhook Telegram
Pour des instructions détaillées, consultez le tutoriel ci-dessous.
/start
- Démarrer le bot/language
- Changer de langue/switchmodel
- Changer de modèle IA/new
- Commencer une nouvelle conversation/history
- Obtenir un résumé de l'historique des conversations/help
- Obtenir de l'aide/img
- Générer une image (DALL-E)/flux
- Générer une image (Cloudflare Flux)
/GPT-Telegram-Worker
│
├── /src
│ ├── /api
│ │ ├── azure.ts # Gère les interactions avec l'API Azure
│ │ ├── claude.ts # Gère les interactions avec l'API Claude
│ │ ├── flux-cf.ts # Gère l'interface de dessin IA Cloudflare
│ │ ├── gemini.ts # Gère les interactions avec l'API Google Gemini
│ │ ├── groq.ts # Gère les interactions avec l'API Groq
│ │ ├── image_generation.ts # Gère l'interface de dessin DALL·E
│ │ ├── model_api_interface.ts # Interface générique définissant la structure standard de l'API du modèle
│ │ ├── openai_api.ts # Gère les interactions avec l'API OpenAI
│ │ ├── openai_compatible.ts # Gère les interactions d'API compatibles avec OpenAI
│ │ └── telegram.ts # Gère la logique du bot Telegram
│ ├── /config # Fichiers de configuration
│ │ └── commands.ts # Commandes du bot Telegram
│ ├── /utils
│ │ └── helpers.ts # Fonctions et outils utilitaires
│ │ └── i18n.ts # Fonctions multilingues
│ │ └── redis.ts # Fonctions Upstash Redis
│ │ └── image_analyze.ts # Fonctions d'upload d'images
│ ├── index.ts # Fichier d'entrée, gère les requêtes et réponses
│ └── env.ts # Configure les variables d'environnement
├── /types # Fichiers de définition de types
│ └── telegram.d.ts # Définitions de types pour l'API Telegram
├── wrangler.toml # Fichier de configuration Cloudflare Worker
├── tsconfig.json # Fichier de configuration TypeScript
├── package.json # Fichier des dépendances du projet
└── README.md # Documentation du projet
-
Installez Wrangler CLI :
npm install -g @cloudflare/wrangler
-
Connectez-vous à votre compte Cloudflare :
wrangler login
-
Créez un nouveau projet Workers :
wrangler init telegram-bot
-
Copiez le fichier
dist/index.js
dans votre projet. -
Éditez le fichier
wrangler.toml
pour configurer votre projet :name = "telegram-bot" type = "javascript" account_id = "votre_account_id" workers_dev = true
-
Déployez sur Cloudflare Workers :
wrangler publish
- Connectez-vous au Dashboard Cloudflare.
- Sélectionnez "Workers & Pages".
- Cliquez sur "Create application" puis choisissez "Create Worker".
- Nommez votre Worker et cliquez sur "Deploy".
- Copiez-collez le contenu de
dist/index.js
dans l'éditeur, sauvegardez. - Ajoutez les variables d'environnement nécessaires dans "Settings".
Utilisez l'API Telegram Bot pour configurer le Webhook, exemple d'URL :
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/setWebhook?url=https://your-worker.your-subdomain.workers.dev/webhook
https://api.telegram.org/bot123456789:abcdefghijklmn/setWebhook?url=https://gpt-telegram-worker.abcdefg.workers.dev/webhook
-
Clonez le projet :
git clone https://github.com/snakeying/telegram-bot.git
-
Installez les dépendances :
npm install
-
Configurez les variables d'environnement.
-
Compilez le TypeScript :
npm run build
-
Lancez le bot :
npm start
Nom de la Variable | Description | Valeur par Défaut | Exemple |
---|---|---|---|
OPENAI_API_KEY | Clé API OpenAI | - | sk-abcdefghijklmnopqrstuvwxyz123456 |
OPENAI_BASE_URL | URL de base de l'API OpenAI | https://api.openai.com/v1 | https://votre-endpoint-personnalise.com/v1 |
OPENAI_MODELS | Liste des modèles OpenAI disponibles | - | gpt-3.5-turbo,gpt-4 |
TELEGRAM_BOT_TOKEN | Token du bot Telegram | - | 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 |
WHITELISTED_USERS | Liste des ID utilisateurs autorisés | - | 12345678,87654321 |
SYSTEM_INIT_MESSAGE | Message d'initialisation du système | You are a helpful assistant. | Vous êtes un assistant utile. |
SYSTEM_INIT_MESSAGE_ROLE | Rôle du message d'initialisation du système | system | system |
DEFAULT_MODEL | Modèle IA utilisé par défaut | - | gpt-3.5-turbo |
UPSTASH_REDIS_REST_URL | URL REST Upstash Redis | - | https://votre-url-redis.upstash.io |
UPSTASH_REDIS_REST_TOKEN | Token REST Upstash Redis | - | votre-token-redis |
DALL_E_MODEL | Version du modèle DALL-E | dall-e-3 | dall-e-3 |
CLOUDFLARE_API_TOKEN | Token API Cloudflare | - | votre-token-api-cloudflare |
CLOUDFLARE_ACCOUNT_ID | ID de compte Cloudflare | - | votre-id-compte-cloudflare |
FLUX_STEPS | Nombre d'étapes de génération Flux | 4 | 4-8, maximum 8 |
PROMPT_OPTIMIZATION | Activer l'optimisation des prompts | false | true |
EXTERNAL_API_BASE | URL de base de l'API externe | - | https://api-externe.com |
EXTERNAL_MODEL | Nom du modèle externe | - | nom-modele-externe |
EXTERNAL_API_KEY | Clé API externe | - | cle-api-externe |
GOOGLE_MODEL_KEY | Clé API du modèle Google AI | - | votre-cle-api-google |
GOOGLE_MODEL_BASEURL | URL de base de l'API du modèle Google AI | https://generativelanguage.googleapis.com/v1beta | https://votre-endpoint-google-personnalise.com |
GOOGLE_MODELS | Liste des modèles Google AI disponibles | - | gemini-pro,gemini-pro-vision |
GROQ_API_KEY | Clé API Groq | - | votre-cle-api-groq |
ANTHROPIC_API_KEY | Clé API Anthropic | - | votre-cle-api-anthropic |
ANTHROPIC_BASE_URL | URL de base de l'API Anthropic | https://api.anthropic.com | https://votre-endpoint-anthropic-personnalise.com |
OPENAI_COMPATIBLE_KEY | Clé API compatible avec OpenAI | - | sk-abcdefghijklmnopqrstuvwxyz123456 |
OPENAI_COMPATIBLE_URL | URL de base de l'API compatible avec OpenAI | - | https://your-custom-endpoint.com/v1 |
Note : Certaines variables nécessitent une configuration manuelle et n'ont pas de valeur par défaut.
Permet aux utilisateurs de télécharger des images et d'obtenir une analyse IA. Voici comment l'utiliser :
- L'utilisateur envoie une image au bot.
- Il ajoute un prompt d'analyse dans la légende, par exemple "Analysez cette image".
- Le bot utilise le modèle IA actuellement sélectionné (OpenAI ou Google Gemini) pour analyser l'image.
- Le résultat de l'analyse est renvoyé à l'utilisateur sous forme de message texte.
Note : Assurez-vous que le modèle IA que vous utilisez prend en charge l'analyse d'images. Si le modèle actuel ne le supporte pas, le bot vous invitera à passer à un modèle multimodal.
Lorsque la variable d'environnement PROMPT_OPTIMIZATION est définie sur true, la fonctionnalité de génération d'images Flux utilise une API externe pour optimiser les prompts. Cette fonctionnalité fonctionne comme suit :
- L'utilisateur fournit le prompt original.
- Le système utilise l'API externe configurée avec EXTERNAL_API_BASE, EXTERNAL_MODEL et EXTERNAL_API_KEY pour optimiser le prompt.
- Le prompt optimisé est utilisé par le modèle Flux pour générer l'image.
Cette fonctionnalité peut aider à générer des images plus précises et mieux adaptées aux spécificités du modèle Flux. Pour l'utiliser, assurez-vous d'avoir correctement configuré toutes les variables d'environnement associées.
- 🚦 Utilisation Raisonnable des Quotas API : Soyez particulièrement attentif aux limites d'utilisation, surtout pour les services de génération et d'analyse d'images.
- 🔐 Protection des Informations Sensibles : Gardez vos variables d'environnement et clés API en sécurité.
- 🧠 Compréhension des Spécificités des Modèles : Choisissez le modèle IA le plus adapté à votre scénario d'utilisation.
- 🔄 Mises à Jour Régulières : Actualisez régulièrement le code et les fonctionnalités pour des performances optimales.
- 🛡️ Priorité à la Sécurité : Mettez à jour régulièrement vos clés API et suivez le principe du moindre privilège.
- 🎨 Optimisation des Prompts Flux : Lors de l'activation de PROMPT_OPTIMIZATION, assurez-vous de configurer correctement EXTERNAL_API_BASE, EXTERNAL_MODEL et EXTERNAL_API_KEY.
- ⛔ Avis important : Afin d'éviter d'éventuels conflits, il est déconseillé d'ajouter dans OpenAI Compatible des modèles déjà utilisés par d'autres API. Par exemple, si vous avez configuré l'API Gemini et sélectionné le modèle gemini-1.5-flash, vous ne devriez pas ajouter ce même modèle dans OpenAI Compatible.
- Le bot ne répond pas ? Vérifiez la configuration du Webhook et des variables d'environnement.
- Vous rencontrez des limites API ? Vérifiez votre utilisation des quotas API.
- L'analyse d'image échoue ? Assurez-vous d'utiliser un modèle multimodal comme GPT-4o/GPT-4o-mini ou Gemini 1.5 Pro/flash.
Ce projet est sous licence MIT.
Copyright (c) 2024 [snakeying]