Не могу запустить простое вводное приложение langchain и получаю ошибку
У меня проблемы с запуском простого примера из langchain
from dotenv import load_dotenv,find_dotenv
load_dotenv(find_dotenv())
from langchain.llms import openai
llm = OpenAI(temperature=0.9)
text = "What would be a good company name for a company that makes colorful socks?"
print(llm(text))
Когда я запускаю его, у меня появляется ошибка ниже. Сегодня утром код работал нормально, не знаю, что случилось.
Не могли бы вы помочь?
'''
InvalidRequestError Traceback (последний вызов — последний)Cell In[40], строка 21 text = «Какое название подойдет компании, производящей яркие носки?» ----> 2 print(llm(текст))
Файл ~\AppData\Local\Programs\Python\Python39\lib\site-packages\langchain\llms\base.py:291 в BaseLLM.вызов(self, Prompt, Stop, обратные вызовы)286 def call(287 self, Prompt: str, stop: Необязательный[List[str]] = Нет, обратные вызовы: Обратные вызовы = Нет 288 ) -> str:289 """Проверить кеш и запустите LLM по заданному приглашению и введите.""" 290 return (--> 291 self.generate([prompt], stop=stop, callbacks=callbacks)292 .generations[0][0]293 .text294 )
Файл ~\AppData\Local\Programs\Python\Python39\lib\site-packages\langchain\llms\base.py:191, в BaseLLM.generate(self, Prompts, Stop, Callbacks)189 кроме (KeyboardInterrupt, Exception) как e:190 run_manager.on_llm_error(e)--> 191 поднять e 192 run_manager.on_llm_end(output)193 вернуть вывод
Файл ~\AppData\Local\Programs\Python\Python39\lib\site-packages\langchain\llms\base.py:185, в BaseLLM.generate(self, Prompts, Stop, Callbacks)180 run_manager = callback_manager.on_llm_start(181 {"name": self.class.name } , подсказки, invoction_params =params182)183 try:184 вывод = (--> 185 self._generate(prompts, stop=stop, run_manager=run_manager)186 if new_arg_supported187 else self ._generate(prompts, stop=stop)188)189 кроме (KeyboardInterrupt, Exception) как e:190 run_manager.on_llm_error(e)
Файл ~\AppData\Local\Programs\Python\Python39\lib\site-packages\langchain\llms\openai.py:315, в BaseOpenAI._generate(self, Prompts, Stop, run_manager) 313 choice.extend(response[" choice"]) 314 else: --> 315 ответ = завершение_with_retry(self, Prompt=_prompts, **params) 316 choice.extend(response["choices"]) 317 if not self.streaming: 318 # Невозможно обновить использование токена при потоковой передаче
Файл ~\AppData\Local\Programs\Python\Python39\lib\site-packages\langchain\llms\openai.py:106, в Complete_with_retry(llm, **kwargs)102 @retry_decorator103 def _completion_with_retry(**kwargs: Any) -> Любой:104 return llm.client.create(**kwargs)-> 106 return _completion_with_retry(**kwargs)
Файл ~\AppData\Local\Programs\Python\Python39\lib\site-packages\tenacity_ init _.py:289, в BaseRetrying.wraps..wrapped_f(*args, **kw) 287 @functools.wraps(f) 288 def обернутый_f(*args: t.Any, **kw: t.Any) -> t.Any:--> 289 return self(f, *args, **kw)
Файл ~\AppData\Local\Programs\Python\Python39\lib\site-packages\tenacity_init_.py:379 в разделе «Повторная попытка». call(self, fn, *args, **kwargs) 377 retry_state = RetryCallState(retry_object=self, fn=fn, args=args, kwargs=kwargs) 378 while True: --> 379 do = self.iter(retry_state=retry_state)380, если isinstance(do, DoAttempt):381 попробуйте:
Файл ~\AppData\Local\Programs\Python\Python39\lib\site-packages\tenacity_ init _.py:314, в BaseRetrying.iter(self, retry_state) 312 is_explicit_retry = fut.failed и isinstance(fut.Exception() , TryAgain) 313, если нет (is_explicit_retry или self.retry(retry_state)):--> 314 return fut.result()316, если self.after не равен None:317 self.after(retry_state)
Файл ~\AppData\Local\Programs\Python\Python39\lib\concurrent\futures_base.py:438, в Future.result(self, timeout) 436 поднять CancelledError()437 elif self._state == FINISHED:--> 438 return self.__get_result()440 self._condition.wait(timeout)442, если self._state в [CANCELLED, CANCELLED_AND_NOTIFIED]:
Файл ~\AppData\Local\Programs\Python\Python39\lib\concurrent\futures_base.py:390, в Future.__get_result(self) 388, если self._Exception:389 попробуйте:--> 390 поднять self._Exception 391, наконец:392 # Разрыв ссылочного цикла с исключением в self._Exception 393 self = None
Файл ~\AppData\Local\Programs\Python\Python39\lib\site-packages\tenacity_init_.py:382 в разделе «Повторная попытка». call(self, fn, *args, **kwargs) 380 if isinstance(do, DoAttempt):381 try:--> 382 result = fn(*args, **kwargs)383 кроме BaseException: # noqa: B902384 retry_state .set_Exception(sys.exc_info()) # тип: ignore[arg-type]
Файл ~\AppData\Local\Programs\Python\Python39\lib\site-packages\langchain\llms\openai.py:104, в Complete_with_retry.._completion_with_retry(**kwargs)102 @retry_decorator103 def _completion_with_retry(**kwargs: Любой) -> Любой:-> 104 return llm.client.create(**kwargs)
Файл ~\AppData\Local\Programs\Python\Python39\lib\site-packages\openai\api_resources\completion.py:25, в Completion.create(cls, *args, **kwargs) 23, а True:24 попробуйте:---> 25 return super().create(*args, **kwargs)26, кроме TryAgain as e:27, если таймаут не равен None и time.time() > start + timeout:
Файл ~\AppData\Local\Programs\Python\Python39\lib\site-packages\openai\api_resources\abstract\engine_api_resource.py:149, в EngineAPIResource.create(cls, api_key, api_base, api_type, request_id, api_version, Organization, **params) 127 @classmethod 128 def create( 129 cls, (...)136 **params,137 ):138 (139 развертывания_id, 140 механизм, 141 тайм-аут, 142 поток, 143 заголовков, 144 request_timeout,145 typed_api_type,146 запросчик, 147 URL-адрес, 148 параметров, --> 149 ) = cls.__prepare_create_request(150 api_key, api_base, api_type, api_version, организация, **params151 )153 ответа, _, api_key = requestor.request(154 "post" , 155 url, (...)160 request_timeout=request_timeout,161 )163 ifstream:164 # должен быть итератором
Файл ~\AppData\Local\Programs\Python\Python39\lib\site-packages\openai\api_resources\abstract\engine_api_resource.py:83, в EngineAPIResource.__prepare_create_request(cls, api_key, api_base, api_type, api_version, Organization, ** params) 81, если typed_api_type в (util.ApiType.AZURE, util.ApiType.AZURE_AD): 82, если развертывание_id равно None, а engine равен None:---> 83 поднять ошибку.InvalidRequestError(84 "Необходимо указать 'engine' или ' параметр Deployment_id' для создания %s" 85 % cls,86 "engine", 87 )88 else:89, если модель - None, а двигатель - None:
InvalidRequestError: необходимо предоставить параметр «engine» или «deployment_id», чтобы создать <class «openai.api_resources.completion.Completion»> '''
2 ответа
Проблема была не в самом коде, а в блокноте Jupyter, где я пытался его запустить. Когда я скопировал его в простой файл Python и запустил через VSCode, все заработало хорошо.
Судя по предоставленной вами обратной трассировке, вы используете ключ API Azure:
если typed_api_type в (util.ApiType.AZURE, util.ApiType.AZURE_AD): 82, если развертывание_id имеет значение None, а двигатель — None: ---> 83 вызывает ошибку.InvalidRequestError.
У LangChain есть отдельныйAzureOpenAI
класс, который обрабатывает немного другую настройку, которая происходит при использовании Azure. Обратите внимание, что вам необходим собственный экземпляр развертывания в Azure, на который вы затем ссылаетесь при инициализации своегоllm
пример.
Из документов :
from langchain.llms import AzureOpenAI
# Create an instance of Azure OpenAI
# Replace the deployment name with your own
llm = AzureOpenAI(
deployment_name="td2",
model_name="text-davinci-002",
)
llm("Tell me a joke")
Другие, кто столкнулся с этой проблемой, похоже, нашли обходной путь , используя стандартныйlangchain.llms.OpenAI
класс, но затем передавая пользовательский'engine'
параметр (вместо'model'
). Но, похоже, теперь, когда у LC есть официальный интерфейс Azure, вам не нужно с этим заморачиваться.
Здесь также может оказаться полезной документация OpenAI Github по конечным точкам Azure .