Я пытаюсь использовать модель Azure OpenAI для создания комментариев на основе данных из моей таблицы BigQuery в GCP с помощью облачных функций. Вот скрипт Python, над которым я работал:
from azure_openai import AzureOpenAI
def generate_comment(month, year, country, column_name, current_value, previous_value):
prompt_ = ("")
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"), ## tried also api_key = "AZURE_OPENAI_API_KEY"
api_version = "2023-09-15-preview",
azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT")
)
response = client.completions.create(model = "MODEL_NAME", prompt=prompt_, max_tokens=50, temperature=0.35)
return response.choices[0].text
Раньше я пробовал старую версию, но получил ошибку openai.lib._old_api.APIRemovedInV1
:
openai.api_type = "azure"
openai.api_base = "https://xxx.openai.azure.com/"
openai.api_version = "2023-09-15-preview"
openai.api_key = "xxx"
response = openai.Completion.create(
engine = "xxx",
prompt=prompt_,
temperature=0.35)
return response['choices'][0]['message']['content']
Однако я сталкиваюсь с внутренней ошибкой сервера 500 с сообщением:
ValueError: Must provide one of the `base_url` or `azure_endpoint` arguments, or the `AZURE_OPENAI_ENDPOINT` environment variable
Я проверил конфигурацию Azure OpenAI и убедился, что ключ API и конечная точка верны. Может ли кто-нибудь помочь мне определить, что может быть причиной этой ошибки?
Попробуйте заменить client.completions.create()
на client.chat.completions.create()
. Обновите версию opeani
, если вы этого еще не сделали. Ниже приведен код для openai_1.19.0
, он должен работать с параллельными версиями.
from azure_openai import AzureOpenAI
def generate_comment():
messages = [{"role" : "system", "content" : "You are an assitant"}]
messages.append({"role" : "user", "content" : "YOUR_PROMPT_HERE"})
client = AzureOpenAI(
api_key = "YOUR_API_KEY",
api_version = "2023-09-15-preview",
azure_endpoint = "YOUR_AZURE_OPENAI_ENDPOINT"
)
response = client.chat.completions.create(model = "YOUR_DEPLOYED_MODEL_NAME",
messages=messages,
max_tokens=50,
temperature=0.35)
return response.choices[0].message.content
Поскольку вы используете os.getenv()
для нескольких параметров, убедитесь, что они настроены, иначе вы можете напрямую скопировать и вставить строки.
Это работало следующим образом:
import openai
# Set up the Azure OpenAI configuration
openai.api_type = "azure"
openai.api_base = "https://XXXX.openai.azure.com/"
openai.api_key = "XXXX"
openai.api_version = "XXXX"
def generate_comment():
prompt_ = ""
messages = [
{"role": "system", "content": "You will generate comments based on the given data."},
{"role": "user", "content": prompt_}
]
# Send a completion call to Azure OpenAI to generate a comment
response = openai.ChatCompletion.create(
engine = "XXXX", # engine = "deployment_name"
messages=[
{"role": "system", "content": "You will generate comments based on the given data."},
{"role": "user", "content": prompt_}
],
max_tokens=50,
temperature=0.35
)
return response['choices'][0]['message']['content']
Спасибо за ваши комментарии. Я все еще получаю сообщение об ошибке типа: TypeError: объект ChatCompletionMessage не подлежит подписке. Пробовал разные версии, но пока не работает.