llmcord.py
与你的朋友一起与大语言模型对话!
llmcord.py 让你(和你的朋友)可以直接在 Discord 中与大语言模型聊天。它几乎可以与任何大语言模型兼容,无论是远程还是本地托管的。
功能
基于回复的聊天系统
只需 @ 机器人即可开始对话,回复以继续。通过回复链建立对话!
你可以:
- 继续你自己的对话或他人的对话
- 通过简单地回复较早的消息来"回溯"对话
- 在回复服务器中任何消息时 @ 机器人,询问相关问题
此外:
- 同一用户的连续消息会自动链接在一起。只需回复最新的消息,机器人就能看到所有内容。
- 你可以无缝地将任何对话移至线程中。只需从任何消息创建线程,并在其中 @ 机器人即可继续。
选择任何大语言模型
llmcord.py 支持来自以下平台的远程模型:
或使用以下工具运行本地模型:
或使用任何其他兼容 OpenAI 的 API 服务器。
更多功能:
- 使用视觉模型时支持图像附件(如 gpt-4o、claude-3、llava 等)
- 支持文本文件附件(.txt、.py、.c 等)
- 可自定义系统提示
- 私信访问(无需 @)
- 用户身份识别(仅限 OpenAI API)
- 流式响应(完成时变为绿色,自动分割过长的消息)
- 在适当时显示有用的警告消息(如超过可自定义的消息限制时显示"⚠️ 仅使用最后 25 条消息")
- 在大小管理(无内存泄漏)和互斥保护(无竞态条件)的全局字典中缓存消息数据,以最大化效率并最小化 Discord API 调用
- 完全异步
- 1 个 Python 文件,约 200 行代码
使用说明
开始之前,请安装 Python 并克隆此 git 仓库。
-
安装 Python 依赖:
pip install -U discord.py openai
-
复制"config-example.json"并将其命名为"config.json",然后进行设置(见下文)
-
运行机器人:
python llmcord.py
(邀请链接将打印在控制台中)
大语言模型设置:
设置 | 描述 |
---|---|
providers | 添加你想使用的大语言模型提供商,每个都包含一个 base_url 和可选的 api_key 条目。常见提供商(openai 、ollama 等)已包含在内。仅支持兼容 OpenAI 的 API。 |
model | 设置为 <提供商名称>/<模型名称> ,例如:- openai/gpt-4o - ollama/llama3.1 - openrouter/anthropic/claude-3.5-sonnet |
extra_api_parameters | 大语言模型的额外 API 参数。根据需要添加更多条目。 (默认: max_tokens=4096, temperature=1.0 ) |
system_prompt | 编写任何你想要的内容来自定义机器人的行为! |
Discord 设置:
设置 | 描述 |
---|---|
bot_token | 在 discord.com/developers/applications 创建一个新的 Discord 机器人,并在"Bot"选项卡下生成令牌。同时启用"MESSAGE CONTENT INTENT"。 |
client_id | 在你刚刚创建的 Discord 机器人的"OAuth2"选项卡下找到。 |
status_message | 设置一个自定义消息,显示在机器人的 Discord 个人资料上。最多 128 个字符。 |
allowed_channel_ids | 允许机器人使用的 Discord 频道 ID 列表。留空以允许所有频道。 |
allowed_role_ids | 允许使用机器人的 Discord 角色 ID 列表。留空以允许所有人。指定至少一个角色也会禁用私信。 |
max_text | 单条消息允许的最大文本量,包括文件附件中的文本。 (默认: 100,000 ) |
max_images | 单条消息允许的最大图像附件数量。仅适用于使用视觉模型时。 (默认: 5 ) |
max_messages | 回复链中允许的最大消息数量。 (默认: 25 ) |
use_plain_responses | 设置为 true 时,机器人的消息会更像普通用户消息。这将禁用嵌入、流式响应和警告消息。(默认: false ) |
注意事项
-
如果遇到问题,请尝试我在这里的建议
-
只有来自 OpenAI 的模型是"用户身份感知"的,因为只有 OpenAI API 支持消息的"name"属性。希望其他模型未来也能支持这一功能。
-
欢迎提交 PR :)