ChatGPT AI聊天机器人实践

2023-06-30 15:49:58 浏览数 (1)

背景

ChatGPT 时代,开发新的 AI 应用的门槛大大降低了,你无需要去研究机器学习,深度学习等等模型,还有去准备GPU硬件,再新的趋势下,伴随着 GPT-3、Stable Diffusion 这样预训练好的大型基础模型的出现,以及这些模型的能力通过开放 API 的形式提供出来,即使没有任何机器学习的理论知识,你只需要一两天时间,就能做出一个能解决实际问题的 AI 应用。

API

大型语言模型的接口其实非常简单,像 OpenAI 就只提供了 Complete 和 Embedding 两个接口,其中,Complete 可以让模型根据你的输入进行自动续写,Embedding 可以将你输入的文本转化成向量。

业务描述

以前实现聊天机器需要套模板。这个的缺点,就是每次的回答都一模一样。当然,我们可以设计多个模版轮换着表达相同的意思,但是最多也就是三四个模版,整体的体验还是相当呆板。

有了 GPT 这样的生成式的语言模型,我们就可以让 AI 自动根据我们的需求去写文案了。只要把我们的需求提给 Open AI 提供的 Completion 接口,他就会自动为我们写出这样一段文字。

ChatGPT 参数

Open AI 提供的 Completion 接口 ,参数列表:

  • engine,OpenAI 使用哪一个引擎,选择text-davinci-003
  • prompt,输入的提示语
  • max_tokens,调用生成的内容允许的最大 token 数量,token 是分词之后的一个字符序列里的一个单元。
  • n,AI 给你生成几条内容供你选择,在这样自动生成客服内容的场景里,我们当然设置成 1。
  • stop,模型输出的内容在遇到什么内容的时候就停下来。

实现

代码语言:javascript复制
import logging
import openai
from telegram import Update
from telegram.ext import filters, MessageHandler, ApplicationBuilder, CommandHandler, ContextTypes

# 设置日志记录
logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    level=logging.INFO)

# 设置 OpenAI API key
openai.api_key = "你的Open AI Key"

# 定义函数,处理 "/start" 命令
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await context.bot.send_message(chat_id=update.effective_chat.id, text="我是一个机器人,请和我聊天吧!")

# 定义函数,使用 OpenAI 生成回复
async def generate_response(update: Update, context: ContextTypes.DEFAULT_TYPE):
    # 获取用户的消息
    message = update.message.text
    
    # 使用 OpenAI 生成回复
    response = openai.Completion.create(
        engine="text-davinci-003",
        prompt=f"{message}n",
        max_tokens=128,
        n=1,
        stop=None,
        temperature=0.5,
    ).choices[0].text
    
    # 将回复发送给用户
    await context.bot.send_message(chat_id=update.effective_chat.id, text=response)

# 定义函数,处理未知命令
async def unknown(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await context.bot.send_message(chat_id=update.effective_chat.id, text="抱歉,我不明白您的命令。")
    
if __name__ == '__main__':
    # 设置 Telegram 机器人
    application = ApplicationBuilder().token('你的Telegram Token').build()
    
    # 添加 "/start" 命令处理器
    start_handler = CommandHandler('start', start)
    application.add_handler(start_handler)
    
    # 添加消息处理器,使用 OpenAI 生成回复
    generate_response_handler = MessageHandler(filters.TEXT & (~filters.COMMAND), generate_response)
    application.add_handler(generate_response_handler)    
    
    # 添加未知命令处理器
    unknown_handler = MessageHandler(filters.COMMAND, unknown)
    application.add_handler(unknown_handler)

    # 启动机器人,并等待消息的到来
    application.run_polling()

0 人点赞