python 开放/v1/完成与/v1/chat/completions结束点

qlfbtfca  于 2023-05-16  发布在  Python
关注(0)|答案(3)|浏览(1607)
class OpenaiClassifier():
    def __init__(self, api_keys):
        openai.api_key = api_keys['Openai']

    def get_ratings(self, review):
        prompt = f"Rate the following review as an integer from 1 to 5, where 1 is the worst and 5 is the best: \"{review}\""
        
        response = openai.Completion.create(
            engine="text-davinci-003",
            prompt=prompt,
            n=1,
            max_tokens=5,
            temperature=0.5,
            top_p=1
        )

        try:
            rating = int(response.choices[0].text.strip())
            return rating
        except ValueError:
            return None

我想知道/v1/completions和/v1/chat/completions端点之间的主要区别是什么,以及如何使用这些模型进行文本分类:gpt-4、gpt-4-0314、gpt-4-32k、gpt-4-32k-0314、gpt-3.5-turbo、gpt-3.5-turbo-0301

r1zhe5dt

r1zhe5dt1#

/completions端点提供单个****提示的完成,并接受单个字符串作为输入,而/chat/completions提供给定对话的响应,并要求输入与消息历史对应的特定格式。
如果你想使用聊天gpt模型,你需要使用/chat/completions API,但你的请求必须调整。

prompt = f"Rate the following review as an integer from 1 to 5, where 1 is the worst and 5 is the best: \"{review}\""

response = openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "user", "content": prompt}
  ]
)
qc6wkl3g

qc6wkl3g2#

奥列格的答案是好的和正确的,但更完整的答案是:
/v1/完成终点适用于旧型号,如DeVinci。它是一个非常强大的模型,可以获取指令并生成输出。
/v1/chat/completions API用于较新的聊天模型(正如Oleg提到的)。GPT-3.5-Turbo很棒,因为它可以做DeVinci能做的一切,但它更便宜(成本的1/10),缺点是-要让它和DeVinci执行相同的操作,它可能需要更大的输入,输入可能更复杂。
当你给予例子时,聊天模型表现最好。

对于DeVinci(或其他基于/v1/completions API的模型),输入看起来像一条指令:“以风为主题创作两到三句简短的恐怖故事。”
对于聊天模型,输入将看起来像聊天:

Two-Sentence Horror Story: He always stops crying when I pour the milk on his cereal. I just have to remember not to let him see his face on the carton.
    
Topic: Wind
Two-Sentence Horror Story:

输出为chat完成。例如:The wind howled through the night, shaking the windows of the house with a sinister force. As I stepped outside, I could feel it calling out to me, beckoning me to follow its chilling path.
这是一个real example from OpenAI documentation(我添加了一些关于指令API的上下文)。
因此,需要考虑的要点是:

  • Pricing(聊天模式更便宜-GPT 4除外,因为它仍处于测试阶段)
  • 输入差异(聊天模型输入更复杂)
  • 未来的支持-据我所知,较新的模型将侧重于聊天
  • 微调-目前只有GPT 3型号(指令型号)支持微调
fdbelqdn

fdbelqdn3#

根据我的使用经验,有一些不同
1.后端型号不同:请参阅doc

/v1/chat/completions: gpt-4, gpt-4-0314, gpt-4-32k, gpt-4-32k-0314, gpt-3.5-turbo, gpt-3.5-turbo-0301
/v1/completions:    text-davinci-003, text-davinci-002, text-curie-001, text-babbage-001, text-ada-001

1.角色选择:在/chat/completions中,您可以选择不同的角色{user,assistant,system},当您希望模型始终保持在某个上下文中时,系统角色很有帮助,例如,系统可能是:You are a customer service
1.追加会话:在/chat/completions中,您可以以会话的方式输入更长的上下文,例如,您可以转到
{“role”:“user”,“content”:“我是彼得”} {“role”:“user”,“content”:“喂,彼得!“} {“role”:“user”,“content”:“我叫什么名字?“}
你可以不断地附加对话,让模型记住你以前的对话,当你想应用它来构建有记忆的聊天机器人时,这是非常有用和重要的。虽然这也可以在/completions端点中完成,但它不是显式的。
总的来说,我认为从长远来看,/chat/completions端点是要走的路。

相关问题