gpt4 book ai didi

python - OpenAI ChatGPT (GPT-3.5) API : How do I make the API return a completion faster?

转载 作者:行者123 更新时间:2023-12-02 22:47:25 26 4
gpt4 key购买 nike

我正在使用 ChatGPT API 生成许多产品的描述和简短描述。我开发了一个可以生成它的工具,但是生成和创建它需要大约 40 秒。

我想知道是否有解决方案来优化这个生成时间。我尝试了很多方法,例如并行发送两个 API 调用或使用 API 的参数(例如,温度 等)。

如果有人有任何解决方案,这是我的代码:

import openai
import random

openai.api_key = 'OPENAI-KEY'


def generateDescription(description, title):
model = "gpt-3.5-turbo"

# Generate a random word limit between 400 and 600
max_words = random.randint(400, 600)
input_text = "Reformule cette description pour qu'elle soit affichée dans un site présentant le produit" + title + \
" et qu'elle fasse entre 400 et 600 mots. Tu dois donc respecter les règles de google et du référencement naturel afin d'optimiser le référencement au maximum.Tu dois appliquer des mots clés spécifiques au produit ainsi qu'utiliser une architecture spéciale ayant 3 parties avec des balises h2: la premiere étant la présentation du produit, la deuxième étant les recommandations d'utilisations et la troisième étant les précautions lors de l'emploi du produit.Voici un exemple d'architecture d'une autre fiche produit dont tu dois t'inspirer et utiliser le même style donné dans les balises: <h2 dir=\"ltr\" style=\"text-align: center;\"><span> Les e-liquides Alfaliquid sont fabriqués en France. </span></h2> <p style=\"text-align: center;\"></p><p style=\"text-align: justify;\"><span style=\"font-family: Montserrat, sans-serif;\"> Grand acteur dans l’élaboration de e-liquide pour e-cigarette, Alfaliquid est un fabricant qui nous montre qu’il n’a pas froid aux yeux. Toujours animée de générosité et de créativité sans bornes, cette marque originaire de la France a su attirer l’attention d’un grand nombre de vapoteurs. Cette notoriété étant régulièrement mise à l’épreuve, la marque propose différentes gammes de e-liquides aux consommateurs. On retrouve notamment la gamme So Fifty qui rassemble des recettes équilibrées et savoureuses. Les e-liquides Alfaliquid sont disponibles en flacon de 10ml et 50ml. </span></p><p style=\"text-align: justify;\"><span style=\"font-family: Montserrat, sans-serif;\"><span>Les arômes utilisés sont certifiés de qualité alimentaire. Cet e-liquide ne contient ni diacétyle, ni parabène, ni ambrox.</span></span></p><p></p><h2 dir=\"ltr\" style=\"text-align: center;\"><span>Recommandation </span></h2><p style=\"text-align: center;\"></p><ul><li dir=\"ltr\" aria-level=\"1\"><p dir=\"ltr\" role=\"presentation\"><span>Pour une efficacité optimale de vos e-liquides, veillez à les stocker dans un endroit sec à l’abri de la lumière.</span></p></li><li dir=\"ltr\" aria-level=\"1\"><p dir=\"ltr\" role=\"presentation\"><span>Afin que la saveur ne s’altère pas, pensez à bien reboucher votre flacon après utilisation.</span></p></li></ul><p></p><h2 dir=\"ltr\" style=\"text-align: center;\"><span>Précaution d’emploi </span></h2><p style=\"text-align: center;\"></p><ul><li dir=\"ltr\" aria-level=\"1\"><p dir=\"ltr\" role=\"presentation\"><span>Tenir hors de portée des enfants.</span></p></li><li dir=\"ltr\" aria-level=\"1\"><p dir=\"ltr\" role=\"presentation\"><span>La nicotine liquide est toxique par contact cutané.</span></p></li><li dir=\"ltr\" aria-level=\"1\"><p dir=\"ltr\" role=\"presentation\"><span>En cas de contact avec la peau : laver abondamment à l’eau et au savon.</span></p></li><li dir=\"ltr\" aria-level=\"1\"><p dir=\"ltr\" role=\"presentation\"><span>En cas d’ingestion ou de malaise, contactez un centre antipoison ou un médecin et montrez l’étiquette du flacon d’e-liquide.</span></p></li><li dir=\"ltr\" aria-level=\"1\"> <p dir=\"ltr\" role=\"presentation\"><span>Produit destiné uniquement à la recharge de cigarette électronique.</span></p> </li> </ul>.Tu n'es également pas un magasin ni quelqu'un travaillant pour la marque de ce produit, donc pas de formules souhaitant la bienvenue ou formules de politesse. Tu dois rester neutre dans tes propos et uniquement présenter le produit avec ses saveurs (si c'est un liquide ou un arôme) et ses caractéristiques spécifiques. La description a reformulée est : " + description
response = openai.ChatCompletion.create(
model=model,
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": input_text}
],
temperature=0.2,
n=1
)

description = response['choices'][0]['message']['content'].strip()
return description


def generateShortDescription(description, title):
model = "gpt-3.5-turbo"

# Generate a random character limit between 400 and 600
max_characters = random.randint(600, 650)
input_text = "Reformule cette description pour qu'elle soit affichée dans un site présentant le produit" + title + \
" et qu'elle fasse minimum 550 caractères et maximum 650 caractères (c'est une description courte). Tu dois donc respecter les règles de google et du référencement naturel afin d'optimiser le référencement au maximum.Tu dois appliquer des mots clés spécifiques au produit ainsi qu'utiliser une architecture spéciale.Tu n'es également pas un magasin ni quelqu'un travaillant pour la marque de ce produit, donc pas de formules souhaitant la bienvenue ou formules de politesse. Tu dois rester neutre dans tes propos et uniquement présenter le produit. La description a reformulée est : " + description

response = openai.ChatCompletion.create(
model=model,
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": input_text}
],
temperature=0.2,
n=1
)

generated_text = response['choices'][0]['message']['content'].strip()

# Ensure the generated text doesn't exceed the maximum characters and ends with a complete sentence
last_sentence_end = generated_text.rfind(".", 0, max_characters)
final_description = generated_text[:last_sentence_end + 1]

return final_description


@app.route('/generationDescription', methods=['POST'])
def generate_texts():
description = request.form.get('description')
title = request.form.get('title')
shortDescription = generateShortDescription(description, title)
description = generateDescription(description, title)

response_data = {
"description": description,
"shortDescription": shortDescription
}
return jsonify(response_data)

最佳答案

为了更快地恢复完成,您唯一可以控制的是您选择的模型,但您已经选择了 gpt-3.5-turbo,这是最快的模型之一。

但是...

如果我是你,我会做的是使用 stream范围。如果您将其设置为 true,您将以与 ChatGPT 相同的方式获得响应(即逐个 token )。实际上,用户可以更快地看到完成情况,因为您的聊天机器人从 OpenAI API 获取第一个 token 后会立即显示该 token ,而无需等待收到完整的完成信息。

请参阅下面的简单 Python 示例 ( source )。

import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")

# Example of an OpenAI ChatCompletion request with stream=True
# https://platform.openai.com/docs/guides/chat

# record the time before the request is sent
start_time = time.time()

# send a ChatCompletion request to count to 100
response = openai.ChatCompletion.create(
model='gpt-3.5-turbo',
messages=[
{'role': 'user', 'content': 'Count to 100, with a comma between each number and no newlines. E.g., 1, 2, 3, ...'}
],
temperature=0,
stream=True # again, we set stream=True
)

# create variables to collect the stream of chunks
collected_chunks = []
collected_messages = []
# iterate through the stream of events
for chunk in response:
chunk_time = time.time() - start_time # calculate the time delay of the chunk
collected_chunks.append(chunk) # save the event response
chunk_message = chunk['choices'][0]['delta'] # extract the message
collected_messages.append(chunk_message) # save the message
print(f"Message received {chunk_time:.2f} seconds after request: {chunk_message}") # print the delay and text

# print the time delay and text received
print(f"Full response received {chunk_time:.2f} seconds after request")
full_reply_content = ''.join([m.get('content', '') for m in collected_messages])
print(f"Full conversation received: {full_reply_content}")

关于python - OpenAI ChatGPT (GPT-3.5) API : How do I make the API return a completion faster?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76962144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com