Я пытаюсь использовать langchain с gpt-35-turbo. Похоже, новый gpt3.5 turbo больше не использует некоторые параметры по ссылке Научитесь работать с моделями ChatGPT и GPT-4 (превью)
В новых моделях
Теперь каждый раз, когда я инициализирую модель LLM через langchain с gpt-3.5-turbo, у меня появляется эта ошибка:
InvalidRequestError: logprobs, best_of and echo parameters are not available on gpt-35-turbo model. Please remove the parameter and try again. For more details, see https://go.microsoft.com/fwlink/?linkid=2227346.
Я не знаю, как «сбросить» эти параметры в langchain.
Это мой код:
from langchain.chains.llm import LLMChain
from langchain.llms.openai import OpenAI
from langchain.prompts.prompt import PromptTemplate
llm = OpenAI(temperature=0, engine=deployment_name)
template = """
You are a helpful assistant that translates English to French. Translate this sentence from English to French: {text}
"""
prompt = PromptTemplate(input_variables=["text"], template=template)
llm_chain = LLMChain(llm=llm, prompt=prompt)
response = llm_chain.generate([
{"text": "I love AI"},
{"text": "I love the ocean"},
])
for g in response.generations:
print(g[0].text)
Обратите внимание, что я использую openAI в Azure, Я также пробовал этот код, и он все еще дает мне ту же ошибку
deployment_name = "my-deployment-name"
from langchain.llms import AzureOpenAI
llm = AzureOpenAI(deployment_name=deployment_name )
print(llm)
llm("Tell me a joke")
Использование ChatOpenAI
вместо OpenAI
(и model_name
вместо engine
) работает для меня на langchain==0.0.127
.
В коде OpenAI ленгчейна есть это предупреждение
if model_name.startswith("gpt-3.5-turbo") or model_name.startswith("gpt-4"):
warnings.warn(
"You are trying to use a chat model. This way of initializing it is "
"no longer supported. Instead, please use: "
"`from langchain.chat_models import ChatOpenAI`"
)
Этот код работает для меня:
import os
from langchain.chains.llm import LLMChain
from langchain.chat_models import ChatOpenAI
from langchain.prompts.prompt import PromptTemplate
llm = ChatOpenAI(temperature=0, model_name = "gpt-3.5-turbo", openai_api_key=os.environ['OPENAI_KEY'])
template = """
You are a helpful assistant that translates English to French. Translate this sentence from English to French: {text}
"""
prompt = PromptTemplate(input_variables=["text"], template=template)
llm_chain = LLMChain(llm=llm, prompt=prompt)
response = llm_chain.generate([
{"text": "I love AI"},
{"text": "I love the ocean"},
])
for g in response.generations:
print(g[0].text)
В вашем сообщении об ошибке упоминается ChatCompletion
, а не ChatOpenAI
, возможно, вы используете неправильный класс? Если нет, то какую версию langchain вы используете? Редактировать: я не знал, что ChatCompletion
пришел из пакета openai. Может попробовать pip install -U openai
Если вы используете azure, это может происходить и с вами github.com/openai/openai-python/issues/318
Я использую Азур. Есть ли способ заставить langchain работать с лазурью?
Я также попробовал AzureOpenAI, и он выдает ту же ошибку (тоже отредактировал сообщение выше с этим кодом)
В комментариях к проблеме GitHub, на которую я ссылался, есть несколько предложений. К сожалению, у меня нет опыта работы с моделями Azure.
Итак, я, наконец, смог это исправить, создав расширение класса AzureOpenai и аннулировав эти аргументы. Код, который работает, приведен ниже:
from langchain.llms import AzureOpenAI
from typing import List
class NewAzureOpenAI(AzureOpenAI):
stop: List[str] = None
@property
def _invocation_params(self):
params = super()._invocation_params
# fix InvalidRequestError: logprobs, best_of and echo parameters are not available on gpt-35-turbo model.
params.pop('logprobs', None)
params.pop('best_of', None)
params.pop('echo', None)
#params['stop'] = self.stop
return params
llm = NewAzureOpenAI(deployment_name=deployment_name,temperature=0.9)
llm("Tell me a joke")
Ответ на самом деле был найден в этой ссылке, и это сработало для меня.
Попробовал это, и это дало мне эту ошибку: InvalidRequestError: необходимо указать параметр «engine» или «deployment_id», чтобы создать <class «openai.api_resources.chat_completion.ChatCompletion»>..