探索基于OpenAI实现个性化对话机器人(二)

#前情提要#

  我想做一个基于我的私有数据的对话机器人。探索基于openAI实现个性化对话机器人(一)-CSDN博客

        前文已经介绍如何使用fine-tuning模型构建自己的chatbot,但是fine-tuning模型也是一个基于概率的模型,由于AI团队使用的训练集数据的规模极大且繁多,你想通过这单次的微调就很快改变模型比较有难度。又陷入了:如何根据我提供的知识进行精准对话呢?

        幸运的是目前OpenAI团队推出了Retrieve助手,它可以基于你提供的私有数据和你进行对话,这样我们不就可以站在巨人的肩膀上做事了吗哈哈哈^^

https://platform.openai.com/docs/assistants/tools/knowledge-retrieval

        总的来说,要是想结合openAI现有的模型进行私域数据对话,目前有2个方案:

(1)fine-tuning---这个之前介绍过了

(2)assistants---AI助手(有assistants、chat和complete)

        assistants下有三个主要功能:

        Functions:函数调用功能,可以让assistants在对话中调用函数并返回结果

        Code interpreter:代码解释器,允许 Assistants API 在沙盒执行环境中编写和运行 Python 代码,让您的助手迭代运行代码以解决具有挑战性的代码和数学问题。 代码解释器每次会话收费 0.03 美元。

        Retrieval:检索工具,可基于文本数据进行检索后对话,主要支持pdf、docx、html、txt以及各种编程语言的后缀文件。该功能每个助手每天支付 0.20 美元/GB 的检索文件费用,就是费用与上传的文件大小有关。

        附上tools的原文档地址:https://platform.openai.com/docs/assistants/tools

  #本文目的#

        本文主要介绍openAI的assistants功能,并且使用assistants的retrieval功能进行基于私域数据的chatbot。

注:小厮认为这retrieve的实现可以参考一下这篇文章使用 LangChain、Pinecone 和 LLM(如 GPT-4 和 ChatGPT)构建基于文档的问答系统_langchain pinecone-CSDN博客

一、在openAI界面构建一个个性化assistant

#参数说明#

Name是你创建的当前机器人助手的名字;

Introduction是这个小助手的介绍(相当于你提示他现在是个啥角色);

Model:当前机器人使用的(LLM)模型;

TOOLS:助手提供的三种工具,上面有介绍;

Files:使用TOOLS必备的私域文件,点击add上传

#步骤#

(1)create一个助手,这里叫xxx chatbot233:

(2)填写name、introduction和model,还有上传你的私域(个性化)文件:

这里注意两个地方:

        a)  retrieval支持的model只有 gpt-4-1106-preview和 gpt-3.5-turbo-1106两个,选别的model下面TOOLS的Retrieval会变灰。

        b)  FILES上传文件有些古怪,我当时传docx后缀真是4都传不上去,一直报文件类型不支持,后来我把word转成pdf后就好了???如果docx解析不了就试试pdf吧。

(3)开始对话

        现在在最底下的文本框中输入你的问题,点击runs,你的专属chatbot就会根据你上传的文件内容回答你的问题啦。

二、利用python代码构建你的个性化assistants

from openai import OpenAI
import time
import os
# Upload a file with an "assistants" purpose

client = OpenAI(
    api_key="你的openAPI key"
    )

# import检索文件
file = client.files.create(
  file=open("路径/文件", "rb"),
  purpose='assistants'
)

# Add the file to the new assistant
assistant = client.beta.assistants.create(
  name="TSL chatbot233",
  instructions="你现在是我的客服小蜜,请根据上传文件内容回答客户问题",
  model="gpt-4-1106-preview",
  tools=[{"type": "retrieval"}],
  file_ids=[file.id]
)

# create a chat thread to save message
thread = client.beta.threads.create()

# 将Messages关联到Thread
while True:
    # 获取用户输入
    user_input = input("请提问:")
    message = client.beta.threads.messages.create(
        thread_id=thread.id,
        role="user",
        content=user_input,
        file_ids=[file.id]
    )
    # 创建运行模型
    run = client.beta.threads.runs.create(
        thread_id=thread.id,
        assistant_id=assistant.id)

    # 获取gpt的answer
    while run.status != "completed":
        print(run.status)
        time.sleep(5)
        run = client.beta.threads.runs.retrieve(
            thread_id=thread.id,
            run_id=run.id
        )
    messages = client.beta.threads.messages.list(thread_id=thread.id)

    print(messages.data[0].content[0].text.value)

        直接运行就可以在终端进行对话:

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值