noDiego/whatsapp-claude-gpt

GitHub: noDiego/whatsapp-claude-gpt

一个基于WhatsApp的多AI模型聊天机器人,整合聊天、图片生成和语音功能以简化通讯自动化。

Stars: 56 | Forks: 18

# WhatsApp-Claude-GPT WhatsApp-Claude-GPT 是一个支持多种 AI 服务提供商的 WhatsApp 聊天机器人,具备聊天、可选的图片生成/编辑以及语音(语音转文字和文字转语音)功能。它专为自然且上下文相关的对话而构建,现在还能处理提醒事项和个性化记忆功能。 ## 支持的 AI 服务提供商 - **OpenAI**:聊天、图片生成、语音(TTS/STT) - **Anthropic Claude**:聊天 - **DeepSeek**:聊天 - **Deepinfra**:聊天、图片生成、转录 - **QWEN**:聊天 - **ElevenLabs**:文字转语音 ## 1.4.0 版本新特性 - **提醒事项**:使用自然语言要求机器人安排一次性或定期提醒。机器人将在指定时间通过 WhatsApp 发送消息。 - **统一记忆**:机器人可以记住个人和群组详细信息,使对话更加个性化。此功能可禁用以节省 token(参见“记忆与 Token 使用”)。 - **GPT‑5 支持**:可与 OpenAI 的 gpt-5 一起用于聊天。 - **图片编辑**:使用参考图编辑/转换图片(仅限 OpenAI)。 - 单聊配置和用户体验改进。 ## 主要功能 - **自动回复**:生成连贯且符合上下文的消息回复 - **图片创建**: - 根据文本生成图片(OpenAI/Deepinfra)。 - 使用参考图编辑/转换图片(仅限 OpenAI)。 - **提醒事项**:创建、列出、更新、删除、停用和重新激活提醒(包括定期提醒)。 - **记忆功能**(可选):记住用户/群组信息以提供更个性化的回复。可关闭以减少 token 使用。 - **语音交互**:理解语音消息并能以语音消息回复 - **群组互动**:在群聊中被提及时响应(例如,“嗨 Roboto,你好吗?”) - **上下文管理**:跟踪近期消息以维护上下文,支持自定义限制 - **单聊配置**:按聊天或群组自定义机器人的个性和名称 - **多提供商支持**:为不同功能使用不同的 AI 服务提供商 - **网络搜索(仅限 OpenAI)**:可以搜索互联网信息来生成回复 ## 环境要求 在初始化机器人之前,请确保已安装 [Node.js](https://nodejs.org/en/download/)。 (已使用 Node v22.14.0 测试) ## 快速设置 1. 克隆仓库并导航到项目目录: git clone https://github.com/noDiego/whatsapp-claude-gpt.git cd whatsapp-claude-gpt 2. 安装项目依赖: npm install 3. 复制 `.env.example` 为 `.env` 并配置您的 API 密钥: cp .env.example .env 4. 编辑 `.env` 文件,填入您的 API 密钥和首选项。至少需要设置 OpenAI API 密钥。 OPENAI_API_KEY=your_openai_api_key 5. 启动机器人: npm run start 6. 启动后,机器人将在终端中显示一个二维码。使用手机上的 WhatsApp 应用扫描此二维码,将机器人链接到您的 WhatsApp 账户。 ## 基本配置 您至少需要一个支持的 AI 服务提供商的 API 密钥。对于使用 OpenAI 的基本用法: ``` OPENAI_API_KEY=your_api_key BOT_NAME=Roboto IMAGE_CREATION_ENABLED=true VOICE_MESSAGES_ENABLED=true MEMORIES_ENABLED=true ``` - 您可以在此处获取 OpenAI API 密钥:[OpenAI API 密钥](https://platform.openai.com/account/api-keys) ## 使用机器人 ### 聊天 - **私聊**:直接向机器人发送消息 - **群聊**:提及机器人的名称(例如,“嘿 Roboto,今天天气怎么样?”) ### 提醒事项(自然语言) 向机器人发出指令: - “明天上午9点提醒我付账单。” - “设置一个2小时后的提醒,让我伸展一下。” - “每周一上午8点提醒我参加团队站会。” - “列出我的提醒。” - “停用那个提醒。” / “重新激活会议提醒。” 支持功能: - 一次性提醒 - 重复:按分钟、每日、每周、每月 - 列出、更新、删除、停用/重新激活 机器人会在后台管理 ID。如有需要,它会列出提醒事项以便识别正确的更新或删除目标。 ### 记忆与 Token 使用 机器人可以记住个人和群组详情(例如,年龄、职业、兴趣、内部玩笑),使对话随着时间的推移更有帮助。 - 要减少 token 使用,请禁用记忆功能: - 在您的 `.env` 文件中设置 `MEMORIES_ENABLED=false` - 禁用记忆后: - 模型将不会自主存储或获取记忆。 - 手动记忆命令仍然可用,以显示或清除已存储的内容。 - 机器人会避免将原始语音转录内容作为个人记忆保存。 您可以输入的记忆命令: - `-memory show` - `-memory clear` - `-memory group` (在群聊中) - `-memory cleargroup` (在群聊中) ### 使用 `-chatconfig` 命令 `-chatconfig` 命令允许您为特定聊天或群组自定义机器人的行为: ``` -chatconfig [subcommand] [value] ``` 可用子命令: - **prompt**:为当前聊天设置自定义个性/提示 `-chatconfig prompt You are a helpful assistant who specializes in science topics` - **botname**:更改当前聊天中机器人的名称 `-chatconfig botname ScienceBot` - **remove**:移除当前聊天的自定义配置 `-chatconfig remove` - **show**:显示当前的自定义配置 `-chatconfig show` 在群组中,只有管理员可以使用 `-chatconfig` 命令。 使用示例:您可以在私聊中让机器人响应“Roboto”,但在一个教育群组中让它以更正式的个性响应“Teacher”。 ### 图片 - 生成:自然地提出请求(“创建一个极简风格、橙黑配色的狐狸 Logo”)。 - 编辑/转换(仅限 OpenAI):发送一张图片并要求机器人修改它(“把背景变透明”、“把天空替换成日落”等)。机器人将使用您最近发送的参考图片。 示例(仅限 OpenAI 图片编辑): ### 语音 - 要求机器人用语音回复: - “请用语音消息回复。” - “你能把这句话用语音说出来吗?” - 机器人也能理解您发送的语音笔记,并将其纳入上下文。 示例: ### 使用 `-reset` 重置聊天上下文 `-reset` 命令用于清除聊天机器人的当前对话上下文。当您发出此命令时,它会有效地“遗忘”迄今为止已处理的消息,从头开始,就像与用户的对话刚刚开始一样。这在对话明显偏离原始意图或您希望开始一个新话题而不希望聊天机器人尝试与之前的消息保持连续性时特别有用。 要使用 `-reset` 命令,只需输入并发送: ``` -reset ``` 此命令没有额外参数。一旦发送,任何后续消息都将被视为新对话的开始,不会考虑之前讨论的内容。这可以增强聊天机器人后续回复的相关性和准确性。 ## 使用 .env 文件进行配置 #### 使用 OpenAI 处理所有功能的简单示例: 默认情况下,机器人使用 OpenAI 处理所有功能。基本配置如下: ``` ## OPENAI 配置 OPENAI_API_KEY=your_api_key OPENAI_COMPLETION_MODEL=gpt-4o-mini # Model for chat completions OPENAI_IMAGE_MODEL=dall-e-3 # Model for image generation OPENAI_TRANSCRIPTION_MODEL=whisper-1 # Model for transcriptions (speech-to-text OPENAI_SPEECH_MODEL=tts-1 # Model for speech synthesis OPENAI_SPEECH_VOICE=nova # Voice model for speech synthesis # BOT 配置 PREFERRED_LANGUAGE= # Default language for bot responses MAX_CHARACTERS=2000 # Maximum characters per response BOT_NAME=Roboto # Name of the bot to be used in responses MAX_IMAGES=3 # Maximum number of images to generate at once MAX_MSGS_LIMIT=30 # Maximum number of messages to keep in context MAX_HOURS_LIMIT=24 # Maximum time window for message context NODE_CACHE_TIME=259200 # Caching time in seconds for transcribed message data TRANSCRIPTION_LANGUAGE=en # Default language for voice transcription MEMORIES_ENABLED=true # Enable memory feature ## 特性 IMAGE_CREATION_ENABLED=true # Enable image creation VOICE_MESSAGES_ENABLED=true # Enable voice responses # 你可以用这个来定制默认 BOT 的个性和信息(或者可以通过 -chatconfig 进行定制) PROMPT_INFO="You should use a casual tone with plenty of emojis." ``` 此基本配置是您入门所需的全部内容。机器人将为所有服务使用 OpenAI。 ## 高级提供商配置(可选) 您可以为不同能力(聊天、图片、语音、转录)混合使用不同的提供商。如果需要,请在 `.env` 中设置: - `CHAT_PROVIDER=[OPENAI|CLAUDE|DEEPSEEK|DEEPINFRA|QWEN|CUSTOM]` - `IMAGE_PROVIDER=[OPENAI|DEEPINFRA]` - `SPEECH_PROVIDER=[OPENAI|ELEVENLABS]` - `TRANSCRIPTION_PROVIDER=[OPENAI|DEEPINFRA]` 为每个提供商提供相应的 API 密钥和模型名称。参见 `.env.full-example` 获取完整模板。 注意事项: - 网络搜索和图片编辑是 OpenAI 专有功能。 - 如果某个非必要功能的 API 密钥缺失,该功能将自动禁用。 ## 高级配置 .env 选项 对于高级用户,您可以自定义哪个提供商处理每种类型的服务。在您的 `.env` 文件中设置这些变量: #### 完整示例: ``` CHAT_PROVIDER=OPENAI # Which provider to use for chat/text completion (OPENAI, CLAUDE, DEEPSEEK, DEEPINFRA, QWEN, CUSTOM) IMAGE_PROVIDER=OPENAI # Which provider to use for image generation (OPENAI, DEEPINFRA) SPEECH_PROVIDER=OPENAI # Which provider to use for text-to-speech conversion (OPENAI, ELEVENLABS) TRANSCRIPTION_PROVIDER=OPENAI # Which provider to use for speech-to-text transcription (OPENAI, DEEPINFRA) ### PROVIDERS 配置 (APIKEY, BASEURL) # OPENAI 配置 OPENAI_API_KEY=your_openai_api_key # Your API key for OpenAI services OPENAI_COMPLETION_MODEL=gpt-4o-mini # Model to use for text completion/chat OPENAI_IMAGE_MODEL=dall-e-3 # Model to use for image generation OPENAI_SPEECH_MODEL=tts-1 # Model to use for text-to-speech OPENAI_SPEECH_VOICE=nova # Voice to use for text-to-speech OPENAI_TRANSCRIPTION_MODEL=whisper-1 # Model to use for speech-to-text # CLAUDE 配置 CLAUDE_API_KEY=your_claude_api_key # Your API key for Anthropic's Claude CLAUDE_CHAT_MODEL=claude-3-sonnet-20240229 # Model to use for Claude text completion # DEEPSEEK 配置 DEEPSEEK_API_KEY=your_api_key # Your API key for DeepSeek services DEEPSEEK_COMPLETION_MODEL=deepseek-chat # Model to use for DeepSeek text completion # QWEN 配置 QWEN_API_KEY=your_api_key # Your API key for Qwen services QWEN_COMPLETION_MODEL=qwen2.5-vl-72b-instruct # Model to use for Qwen text completion # DEEPINFRA 配置 # 为正常运行,聊天模型必须支持“Tools/Functions”和“Multimodal”。 DEEPINFRA_API_KEY=your_api_key # Your API key for DeepInfra services DEEPINFRA_BASEURL=https://deepinfra.example.com/v1 # Base URL for DeepInfra API DEEPINFRA_COMPLETION_MODEL=meta-llama/Llama-3.3-70B-Instruct # Model for text completion DEEPINFRA_IMAGE_CREATION_MODEL=stabilityai/sd3.5 # Model for image generation DEEPINFRA_TRANSCRIPTION_MODEL=deepinfra-chat # Model for speech transcription ## ELEVENLABS 配置 ELEVENLABS_API_KEY=your_api_key # Your API key for Elevenlabs services ELEVENLABS_VOICEID=EXAVITQu4vr4xnSDxMaL # The VoiceID you want to use (leave empty to use the default) ELEVENLABS_SPEECH_MODEL='eleven_multilingual_v2' # The Speech Model to use # 自定义 AI 配置(这可能并不总是有效。仅供测试目的。) # 为正常运行,聊天模型必须支持“Tools/Functions”和“Multimodal”。 CUSTOM_API_KEY=your_api_key # Your API key for custom AI provider CUSTOM_BASEURL=https://ai.aiprovider.com/v1 # Base URL for custom AI provider API CUSTOM_COMPLETION_MODEL=custom-model1.0 # Model to use for custom AI text completion # BOT 配置 PREFERRED_LANGUAGE=english # Default language for bot responses MAX_CHARACTERS=2000 # Maximum characters per response BOT_NAME=Roboto # Name of the bot to be used in responses MAX_IMAGES=3 # Maximum number of images to generate at once MAX_MSGS_LIMIT=30 # Maximum number of messages to keep in context MAX_HOURS_LIMIT=24 # Maximum time window for message context NODE_CACHE_TIME=259200 # Cache time in seconds for message data TRANSCRIPTION_LANGUAGE=en # Default language for voice transcription USE_CONTACT_NAMES=true # Determines whether the name of stored contacts will be used to identify each user MEMORIES_ENABLED=true # Enable memory feature # 用于定制 BOT 个性的附加提示信息(可选) PROMPT_INFO="You should adopt a friendly and informal tone, often using emojis in responses" # Custom instructions for bot personality # 功能开关 IMAGE_CREATION_ENABLED=false # Whether image creation feature is enabled VOICE_MESSAGES_ENABLED=false # Whether voice message processing is enabled ``` ## API 密钥资源 - [OpenAI API 密钥](https://platform.openai.com/account/api-keys) - [Anthropic API 密钥](https://www.anthropic.com/account/api-keys) - [Deepseek API 密钥](https://platform.deepseek.com/) - [Deepinfra API 密钥](https://deepinfra.com/dash/api_keys) - [QWEN API 密钥](https://bailian.console.alibabacloud.com/?apiKey=1#/api-key-center) - [ElevenLabs API 密钥](https://elevenlabs.io/app/account) ## whatsapp-web.js ExecutionContext 错误已知问题(临时解决方案)** 一些用户遇到了与 `whatsapp-web.js` 依赖版本 `^1.34.1` 相关的 `ExecutionContext` 错误。错误信息如下: ``` Error: Evaluation failed: b at ExecutionContext._ExecutionContext_evaluate (...) at async Client.sendMessage (...) ``` 一个临时的修复方法是编辑文件 `node_modules/whatsapp-web.js/src/util/Store.js` 并注释掉最后一行: ``` // window.injectToFunction({ module: 'WAWebLid1X1MigrationGating', function: 'Lid1X1MigrationUtils.isLidMigrated' }, () => false); ``` 此解决方法不会影响机器人的正常功能,除非您正在使用 Store 功能。 ## 1.1.0 版本更新 通过此更新,机器人获得了理解和回复语音消息的能力。用户现在可以向机器人发送语音消息,它将转录并将其作为对话的一部分进行解读。此外,如果用户请求语音回复,机器人可以生成并发送语音消息进行回复。 **已移除的功能:** - `-speak` 命令已被移除。由于新增了直接处理语音消息的功能,该命令不再必要。 此增强功能提高了机器人的交互性,使对话更加自然和引人入胜。 ## 1.1.1 版本更新 - **默认通讯语言**:引入了新的环境变量 `PREFERRED_LANGUAGE`。这允许用户指定机器人通讯时使用的默认语言。如果留空,机器人将自动检测并以它所回复的聊天语言进行回复。 - **配置管理**:现在要求用户在 `.env` 文件中设置配置,而不是直接修改 `config/index.ts` 文件。此更改旨在简化设置过程并提高可管理性。 ## 1.2.0 版本更新 ## 1.2.2 版本更新 - **使用 `PROMPT_INFO` 自定义机器人个性**:引入了使用 `PROMPT_INFO` 环境变量自定义机器人个性和行为的功能。这允许您提供特定指令和上下文信息,机器人可以使用这些信息来调整其交互方式。无论是采用随意的语气、提醒群组成员活动,还是仅为对话增添趣味,此功能都增强了机器人回复的个性化程度。 通过此更新,用户可以通过直接在 `.env` 配置文件中定义机器人在不同上下文中的行为方式,来增强其交互性。 ## 1.2.4 版本修复 - **流式传输实现**:引入了针对 API 响应的流式传输,以减少 Deepseek 遇到的频繁错误并提高整体可靠性。 - **增强的 Deepseek 消息处理**:由于 Deepseek 的特定限制和要求,为其实施了专门的消息处理方法。 - **Deepseek 已知问题**:请注意,Deepseek 服务当前存在间歇性可用性问题。用户在使用 Deepseek 作为 AI 语言模型时可能会遇到偶尔的错误或服务中断。如果您遇到持续的 Deepseek 问题,我们建议您使用替代的 AI 服务。 - **WhatsAppWeb.js 更新**:更新了 whatsapp-web.js 依赖,以解决群聊识别问题(机器人在未被明确提及时做出响应)。此更新确保了机器人在群聊中仅在其名称被提及时才响应(符合预期)。 ## 1.3.0 版本更新 - **引入 `-chatconfig` 命令**:引入了 `-chatconfig` 命令,允许用户自定义和管理机器人在特定聊天或群组中的行为。此命令提供了动态设置机器人个性、名称和其他配置的灵活性,增强了用户交互和控制。 - **多提供商选择**:用户现在可以为不同的任务选择不同的提供商。通过此更新,您可以灵活地选择不同的 AI 模型用于聊天、图片生成和音频处理。此功能使您能够利用各种提供商的优势,根据您的特定需求更好地定制机器人的能力。您可以直接在 `.env` 文件中配置这些首选项,确保跨不同功能获得无缝且个性化的体验。 ## 许可证 [MIT](https://choosealicense.com/licenses/mit/) 尽情探索您的 WhatsApp-Claude-GPT 机器人吧!
标签:AI应用, AI聊天机器人, Claude, CVE检测, DALL-E 3, GPT, MITM代理, Petitpotam, QWEN, STT, TTS, WhatsApp聊天机器人, WhatsApp集成, 上下文管理, 人工智能, 可配置, 图像生成, 多AI集成, 多模型支持, 提醒功能, 智能助手, 深度学习, 漏洞管理, 用户友好, 用户模式Hook绕过, 用户配置, 群组交互, 自动化攻击, 计算机视觉, 记忆功能, 语音交互, 语音合成, 语音识别