如何限制GPT-3.5 Turbo搜索基础?

Open AI

假设:

写这篇文章时,我假设你已经有了自己的OpenAI API密钥和助手ID。如果你想知道如何获取它们,请在下方评论。

基本要知道的事情:

在此之前,我想让你了解截至2024年1月更新的Open AI API的基本知识。

调用API时有三种类型的角色:

  1. 系统:帮助您指导模型达到您想要获得的回应的性质。
  2. 用户:这是你向模型提出的查询
  3. 助手: 这是您从模型中得到的回应。

步骤指南:

  • 如果您与模型进行持续来回交互,请初始化线程。
thread = openai.beta.threads.create()
  • 然后,在传递刚刚创建的线程 ID、角色和内容(作为提示)时,调用消息创建方法。
  • openai.beta.threads.messages.create(
    thread_id=st.session_state.thread_id,
    role="user",
    content=prompt
    )
  • 然后再次调用message方法,传递先前的响应或者可以说是模型的上下文/搜索基础。在这种情况下,采用一些pdf_txt,确保在已经传递/上传了搜索基础的情况下调用以下所有的方法。
  • openai.beta.threads.messages.create(
    thread_id=st.session_state.thread_id,
    role="user",
    content=pdf_text
    )
  • 在那之后调用run方法,创建一个方法,传递线程ID和助手ID以及任何可选的指令,以启动模型的响应并使用runs.retrieve方法来收集它。在调用此方法之前,传递参数,即线程ID和刚刚在该方法之前获得的运行ID,而此方法完成其执行。
  • run = openai.beta.threads.runs.create(
    hread_id=st.session_state.thread_id,
    assistant_id=assistant_id,
    instructions="Please answer the queries using the knowledge provided in the files. When adding other information mark it clearly as such.",

    )

    while run.status != 'completed':
    time.sleep(1)
    run = openai.beta.threads.runs.retrieve(
    thread_id=st.session_state.thread_id,
    run_id=run.id
    )
  • 最后,通过消息获取模型的响应。使用list()方法传递线程ID,并结合循环使用该方法来获取每个查询传递给模型的个别响应。
  • messages = openai.beta.threads.messages.list(
    thread_id=st.session_state.thread_id
    )

    assistant_messages_for_run = [
    message for message in messages
    if message.run_id == run.id and message.role == "assistant"
    ]
    for message in assistant_messages_for_run:
    if message.content and hasattr(message.content[0].text, 'value'):
    response_text = message.content[0].text.value
  • 最后,当在析取中检查上述条件时,您还可以返回“在提供的上下文或搜索基础上没有找到与查询相匹配的内容”。
  • 2024-02-02 04:23:55 AI中文站翻译自原文