上传文件并将其用作openai知识源

问题描述 投票:0回答:1

我的目标是创建一个聊天机器人,我可以上传一个包含一堆文本的文件,然后使用 openai Assistants api 在查询我的聊天机器人时实际使用该文件,它将使用 gpt-3.5-turbo 作为模型来回答的问题。本质上是创建一个使用文件作为其知识源的聊天机器人。

我的代码是这样的:

file_response = client.files.create(
   file=open("website_content.txt", "rb"),
   purpose="assistants"
)

query_response = client.assistants.query(
   assistant_id="my_assistant_id", 
   input="Tell me about xxx?",
   files=[file_response['id']] 
)

但是,这不起作用,因为我认为可能有一些原因。一方面,我不完全理解它的工作方式,所以正在寻找一些指导。我已经通过仪表板创建了一个助手,但现在我只想上传一个文件,然后查询它。我是否必须使用其他东西,例如通过 api 的

threads
,还是不需要?

如何做到这一点?

python artificial-intelligence chatbot openai-api chatgpt-api
1个回答
0
投票

如何使用 OpenAI API 上传文件并将其用作知识库

我创建了一个 客户支持聊天机器人 并制作了一个关于它的 YouTube 教程

流程如下:

第 1 步:上传具有“助手”用途的文件

my_file = client.files.create(
  file=open("knowledge.txt", "rb"),
  purpose='assistants'
)

第2步:创建助手

my_assistant = client.beta.assistants.create(
    model="gpt-3.5-turbo-1106",
    instructions="You are a customer support chatbot. Use your knowledge base to best respond to customer queries.",
    name="Customer Support Chatbot",
    tools=[{"type": "retrieval"}]
)

第 3 步:创建主题

my_thread = client.beta.threads.create()

第 4 步:向主题添加消息

my_thread_message = client.beta.threads.messages.create(
  thread_id=my_thread.id,
  role="user",
  content="What can I buy in your online store?",
  file_ids=[my_file.id]
)

第5步:运行助手

my_run = client.beta.threads.runs.create(
  thread_id=my_thread.id,
  assistant_id=my_assistant.id,
)

第 6 步:定期检索运行以检查其状态,看看它是否已移至已完成

keep_retrieving_run = client.beta.threads.runs.retrieve(
    thread_id=my_thread.id,
    run_id=my_run.id
)

第七步:当运行状态为“完成”时,检索助手添加到线程的消息

all_messages = client.beta.threads.messages.list(
    thread_id=my_thread.id
)

print(f"User: {my_thread_message.content[0].text.value}")
print(f"Assistant: {all_messages.data[0].content[0].text.value}")

重要提示

助理有时可能表现得很奇怪。 Assistants API 仍处于测试阶段,OpenAI 似乎在保持其可靠性方面遇到了困难,正如官方OpenAI 论坛上所讨论的那样。

助手有时可能会回答说无法访问您上传的文件。您可能认为自己做错了什么,但如果您稍后或第二天运行相同的代码,助手将成功访问所有文件并给您答案。

我得到的奇怪回复如下:

  • 助理:我目前无法访问您上传的文件。 您能否提供一些有关您所销售产品或任何产品的详细信息 您有什么具体问题吗?
  • 助理:我目前无法直接访问 您上传的文件的内容。不过,如果你能提供一些 有关详细信息或具体问题,我们很乐意为您提供帮助 找到您需要的信息。
  • 助理:我目前无法了解具体情况 您上传的文件的内容。您能否提供更多详细信息 有关该文件或其内容的信息,以便我可以进一步帮助您?
  • 助理:我看到您上传了文件。我该如何帮助您 是吗?
© www.soinside.com 2019 - 2024. All rights reserved.