Telegram 早已不仅仅是一个即时通讯软件,它强大的开放平台和 Bot API 让你能够构建几乎任何想象中的应用。今天,我们将深入探索如何利用这些能力,创建属于自己的个人智能助手——它不仅能聊天,还能理解上下文、执行任务,甚至记住你的偏好。本教程面向具备基础编程知识的用户,采用 Python 语言,带你从零到一实现一个真正“智能”的助手。
什么是个人智能助手?为什么选择Telegram?
个人智能助手是一种能够自动执行任务、提供信息或参与对话的软件代理。在 Telegram 中,这类助手以 Bot 的形式存在。选择 Telegram 构建个人智能助手的理由有很多:
- 官方 API 开放:Telegram Bot API 完全免费,功能丰富,支持消息、群组、频道等所有交互场景。
- 跨平台客户端:你可以在任何设备上通过 Telegram 与你的助手交互,无需额外开发前端。
- 高安全性:Telegram 的加密传输和秘密聊天功能为隐私提供保障。
- 强大的社区生态:丰富的 SDK 和工具,让开发效率倍增。
前期准备:创建 Bot 并获取 API 令牌
要创建 Bot,你只需要与 @BotFather 对话。具体步骤如下:
- 打开 Telegram,搜索 @BotFather 并启动聊天。
- 发送
/newbot命令,根据提示输入 Bot 的显示名称和用户名(以bot结尾)。 - 创建成功后,BotFather 会返回一个 HTTP API 令牌,类似
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11,务必保存好,这是你的 Bot 的唯一凭证。
为了方便管理,你还可以通过 BotFather 设置 Bot 的头像、描述和命令列表。使用命令 /setcommands 可以定义菜单命令,例如:
start - 开始使用
task - 添加任务
note - 快速记录
让 Bot 拥有智能:接入 AI 服务
原始 Bot 只能响应预设指令,称不上“智能”。要让它拥有理解、推理和生成能力,我们需要接入外部 AI 服务,如 OpenAI 的 GPT 模型。这里以 OpenAI API 为例:
- 在 OpenAI 官网注册账号并获取 API 密钥。
- 安装 Python 库
openai和python-telegram-bot:
pip install python-telegram-bot openai
接下来,编写代码将 Telegram 消息转发给 AI 模型,并将回复发送回用户。基础示例:
import openai
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters
openai.api_key = "YOUR_OPENAI_KEY"
TELEGRAM_TOKEN = "YOUR_BOT_TOKEN"
async def handle_message(update: Update, context):
user_message = update.message.text
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": user_message}]
)
await update.message.reply_text(response.choices[0].message.content)
def main():
app = Application.builder().token(TELEGRAM_TOKEN).build()
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
app.run_polling()
if __name__ == "__main__":
main()
高级技巧:处理上下文与长期记忆
基础的一问一答无法记忆对话历史,无法体现“个人”化。我们需要让 Bot 记住用户的偏好和关键信息。实现方式有:
1. 会话级上下文
在 python-telegram-bot 中,使用 context.user_data 字典存储当前会话的上下文消息列表,并发送给 AI 时带上历史记录。例如:
history = context.user_data.get("history", [])
history.append({"role": "user", "content": user_message})
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=history[-10:] # 只保留最近 10 条,避免超长
)
assistant_message = response.choices[0].message.content
history.append({"role": "assistant", "content": assistant_message})
context.user_data["history"] = history
2. 长期记忆
对于跨会话的长期信息(如用户生日、偏好话题),可以将其存入数据库(如 SQLite)。当用户发送特定指令(如“记住我喜欢咖啡”)时,提取并存储。在 AI 生成回复时,可注入相关的记忆片段,让回复更个性化。
实战案例:用 Python 实现一个个人助理 Bot
下面是一个功能更完整的示例,它支持设置提醒、快速记录笔记,以及调用 AI 进行对话。由于篇幅限制,这里仅展示核心逻辑。
import sqlite3
from datetime import datetime, timedelta
import openai
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes
# 初始化数据库
conn = sqlite3.connect("assistant.db")
c = conn.cursor()
c.execute('CREATE TABLE IF NOT EXISTS notes (id INTEGER PRIMARY KEY, user_id INTEGER, content TEXT, created_at TEXT)')
conn.commit()
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("你好!我是你的私人助理。我可以帮你记录笔记、设置提醒,还可以智能聊天。试试吧!")
async def note(update: Update, context: ContextTypes.DEFAULT_TYPE):
"""保存笔记"""
content = update.message.text.replace("/note", "").strip()
if content:
c.execute("INSERT INTO notes (user_id, content, created_at) VALUES (?, ?, ?)",
(update.effective_user.id, content, datetime.now().isoformat()))
conn.commit()
await update.message.reply_text("笔记已保存!")
else:
await update.message.reply_text("请在 /note 后输入内容")
async def summary(update: Update, context: ContextTypes.DEFAULT_TYPE):
"""获取 AI 摘要(示例)"""
# 获取该用户最近笔记并发送给 AI 生成摘要
c.execute("SELECT content FROM notes WHERE user_id=? ORDER BY id DESC LIMIT 5", (update.effective_user.id,))
notes = [row[0] for row in c.fetchall()]
if notes:
prompt = "请总结以下笔记要点:" + "\n".join(notes)
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
)
await update.message.reply_text(response.choices[0].message.content)
else:
await update.message.reply_text("暂无笔记")
async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
"""智能对话"""
text = update.message.text
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "system", "content": "你是一个贴心的个人助理,请用中文回答。"},
{"role": "user", "content": text}]
)
await update.message.reply_text(response.choices[0].message.content)
if __name__ == "__main__":
app = Application.builder().token("YOUR_BOT_TOKEN").build()
app.add_handler(CommandHandler("start", start))
app.add_handler(CommandHandler("note", note))
app.add_handler(CommandHandler("summary", summary))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
app.run_polling()
优化与部署:让 Bot 保持在线
本地运行 python bot.py 只能在你电脑开机时工作。为了让助手 24/7 在线,你可以部署到服务器或使用免费/付费的云平台:
- VPS(如 DigitalOcean、阿里云):使用 systemd 或 Docker 保持进程常驻。
- Serverless 平台(如 Cloudflare Workers、AWS Lambda):通过 Webhook 方式触发,无需持续运行。
- 使用 Webhook 而非 Polling:设置 Webhook 后,Telegram 会主动发送更新到你的 HTTPS 端点,更高效。
设置 Webhook 的示例:
import requests
url = "https://api.telegram.org/bot<TOKEN>/setWebhook"
requests.post(url, json={"url": "https://your-domain.com/webhook"})
安全与隐私注意事项
让你的智能助手安全、保护用户隐私是高级技巧的一部分:
- 保护 API 密钥:不要在客户端硬编码,使用环境变量或密钥管理服务。
- 限制指令集:只允许受信任用户执行敏感操作,通过检查
user_id实现白名单。 - 处理用户数据:遵循 GDPR 等法规,提供删除数据的功能,并明确告知用户。
- 防止 Prompt 注入:当用户消息中包含恶意指令时,AI 可能被操纵。建议用系统 prompt 锁死角色,并过滤危险关键词。
- 定期更新:保持依赖库和系统安全更新,避免已知漏洞。
总结
通过本文的指导,你已经掌握了在 Telegram 上创建个人智能助手的核心技能。从创建 Bot、接入 AI,到实现记忆和部署,每一步都为你的助手赋能。现在,你可以根据自己的需求扩展功能,比如添加天气查询、日程管理、联网搜索等。Telegram 的无限可能,正等待着你去探索。立刻动手,打造一个真正懂你的数字伙伴吧!