构建AI驱动的Telegram机器人

在本教程中,我们将探讨如何使用Langchain、OpenAI的API和Telegram API构建一个Telegram机器人。

构建AI驱动的Telegram机器人
一键发币: SUI | SOL | BNB | ETH | BASE | ARB | OP | POLYGON | AVAX | FTM | OK

在本教程中,我们将探讨如何使用Langchain、OpenAI的API和Telegram API构建一个Telegram机器人。这个机器人将处理用户的请求,使用OpenAI的语言模型生成回复,并通过Telegram返回结果。到本教程结束时,你将拥有一个功能齐全的Telegram机器人,可以使用AI处理各种提示。

先决条件

在开始之前,请确保已安装并设置以下先决条件:

  • Python(版本3.7或以上)
  • OpenAI API密钥
  • Telegram机器人令牌(从Telegram BotFather获取)
  • 必需的Python库(python-telegram-bot、openai、langchain)

1、设置环境

首先,让我们安装必要的Python库:用于与Telegram API交互的‘python-telegram-bot’,用于访问OpenAI模型的‘openai’,以及用于构建动态语言工作流的‘langchain’。

pip install python-telegram-bot openai langchain  

接下来为你的项目创建一个新的目录:

mkdir telegram-langchain-bot  
cd telegram-langchain-bot  

在这个文件夹内,创建一个名为‘bot.py’的Python脚本。

要创建Telegram机器人:

  • 打开Telegram并搜索BotFather。
  • 输入‘/newbot’并按照提示创建你的机器人。
  • 完成后,你会收到一个API令牌,用于验证你的机器人。

要访问OpenAI的模型,你需要一个API密钥:

  • 访问OpenAI的API页面并创建一个账户。
  • 从仪表板生成一个API密钥。

存储这个密钥,因为你需要它在Python代码中与OpenAI API进行交互。

2、创建Telegram机器人

在本节中,我们将编写Telegram机器人的代码。它将使用Langchain框架来组织与OpenAI的GPT模型的交互。

创建‘bot.py’文件并添加以下代码:

import os  
import openai  
import logging  
from telegram import Update, ForceReply  
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackContext  
from langchain.prompts import PromptTemplate  
from langchain.chains import LLMChain  
from langchain.llms import OpenAI  
  
# 启用日志记录  
logging.basicConfig(  
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO  
)  
logger = logging.getLogger(__name__)  
  
# 设置OpenAI API密钥  
openai.api_key = os.getenv('OPENAI_API_KEY')  # 你可以将API密钥设置为环境变量  
  
# 定义Langchain链  
template = "用户的问题是:{question}。生成详细的回复。"  
prompt = PromptTemplate(input_variables=["question"], template=template)  
llm = OpenAI(temperature=0.7)  
chain = LLMChain(llm=llm, prompt=prompt)  
  
# 启动机器人  
def start(update: Update, context: CallbackContext) -> None:  
    """当发出命令 /start 时发送消息。"""  
    user = update.effective_user  
    update.message.reply_markdown_v2(  
        fr'你好 {user.mention_markdown_v2()}\! 我是一个由OpenAI驱动的机器人。问我任何问题吧\.'  
    )  
  
# 帮助命令  
def help_command(update: Update, context: CallbackContext) -> None:  
    """当发出命令 /help 时发送消息。"""  
    update.message.reply_text('问我任何问题,我会尝试使用AI回答!')  
  
# 处理消息  
def handle_message(update: Update, context: CallbackContext) -> None:  
    """处理用户消息并使用Langchain生成回复。"""  
    user_message = update.message.text  
      
    try:  
        # 使用Langchain和OpenAI生成回复  
        response = chain.run(question=user_message)  
        update.message.reply_text(response)  
    except Exception as e:  
        update.message.reply_text("抱歉,我暂时无法处理您的请求。")  
        logger.error(f"错误:{e}")  
  
# 错误处理程序  
def error_handler(update: Update, context: CallbackContext) -> None:  
    """记录由更新引起的错误。"""  
    logger.warning(f'更新"{update}"导致错误"{context.error}"')  
  
def main() -> None:  
    """启动机器人。"""  
    # 你的Telegram机器人令牌  
    token = os.getenv('TELEGRAM_BOT_TOKEN')  
      
    # 创建Updater并传递你的机器人令牌。  
    updater = Updater(token)  
  
    # 获取调度器以注册处理器  
    dispatcher = updater.dispatcher  
  
    # 对于不同的命令 - 在Telegram中回答  
    dispatcher.add_handler(CommandHandler("start", start))  
    dispatcher.add_handler(CommandHandler("help", help_command))  
  
    # 对于非命令的消息 - 处理消息  
    dispatcher.add_handler(MessageHandler(Filters.text & ~Filters.command, handle_message))  
  
    # 记录所有错误  
    dispatcher.add_error_handler(error_handler)  
  
    # 启动机器人  
    updater.start_polling()  
  
    # 运行机器人直到按下Ctrl-C或进程接收到SIGINT、SIGTERM或SIGABRT  
    updater.idle()  
  
if __name__ == '__main__':  
    main()  
  

让我们分解一下内容:

  1. OpenAI和Langchain设置:我们配置了OpenAI的GPT模型和Langchain。Langchain帮助结构化对话,这里使用的提示模板格式化了用户的问题,以确保适当的响应。
  2. 机器人初始化:实现了‘/start’命令以欢迎用户。当发出‘/start’命令时,机器人会回应一条友好的消息。
  3. 处理用户消息:监听任何用户消息,通过Langchain链处理,并发送由OpenAI的GPT模型生成的回复。
  4. 错误处理:实现了基本的错误处理,以记录错误并防止机器人崩溃。
  5. Telegram API集成:使用python-telegram-bot库处理与Telegram的交互。它包括‘/start’和‘/help’命令,以及响应文本消息的能力。

3、运行机器人

一旦代码准备就绪,让我们运行机器人:

设置你的OpenAI API密钥和Telegram机器人令牌的环境变量。你可以在终端中这样做:

export OPENAI_API_KEY='your-openai-api-key'  
export TELEGRAM_BOT_TOKEN='your-telegram-bot-token'  

或者,你可以替换‘os.getenv’为硬编码值(不建议用于生产)。

要启动机器人,只需运行‘bot.py’文件:

python bot.py  

机器人将开始轮询来自Telegram的更新,这意味着它将监听新消息并相应地作出回应。

打开Telegram,搜索你的机器人(使用你在创建时提供的名称),并开始互动。你可以向它提问任何问题,它将使用OpenAI的GPT模型生成回复。

4、结束语

你现在成功地使用Langchain、OpenAI和Telegram API构建了一个Telegram机器人。这个机器人可以处理用户消息,使用OpenAI的语言模型处理它们,并通过Telegram以对话格式返回结果。

这个基础可以扩展更多功能,例如:

  • 使用更高级的Langchain工作流程。
  • 改进错误处理。
  • 扩展机器人的能力,增加自定义命令和状态管理。

根据你的需求修改机器人,并将其与更高级的AI功能集成。


原文链接:Building a Telegram Bot using Langchain, OpenAI, and the Telegram API

DefiPlot翻译整理,转载请标明出处

免责声明:本站资源仅用于学习目的,也不应被视为投资建议,读者在采取任何行动之前应自行研究并对自己的决定承担全部责任。
通过 NowPayments 打赏