1.3 🔑 API ключ курса или от OpenAI?

🤖 API ключ от OpenAI 🗝️

(на данный момент не работает на территории РФ, только через VPN)

При создании своего первого ключа, вы получите бесплатные 5$ для использования платформы.

  • 0️⃣ Если вы из РФ, то используйте VPN, для входа на сайт. Если нет аккаунта от OpenAI, для регистрации потребуется зарубежная симкарта (можно приобрести в интернете, либо купить доступ к уже зарегистрированному аккаунту за ~100 руб)
  • 1️⃣ Перейдите по ссылке и авторизуйтесь на сайте OpenAI.
  • 2️⃣ После авторизации на сайте, нажмите на кнопку + Create new secret key и введите любое название для ключа.
  • 3️⃣ Скопируйте полученный ключ и сохраните его в надежном и безопасном месте. Этот ключ будет использоваться для доступа к функциональности OpenAI и взаимодействия с моделями.

 

Для использования моделей от OpenAI в Python в ходе курса мы будем использовать специальную библиотеку. Команда для ее установки pip install openai

Для проверки работоспособности, можно запустить следующий код

from openai import OpenAI
openai_api_key = 'Ваш OpenAI ключ'
client = OpenAI(
    api_key=openai_api_key,
)
messages = [
    {
        "role": "user",  # Роль - ассистент или юзер
        "content": "1+1",  # Сам промпт для подачи в chatGPT
    }
]
chat_completion = client.chat.completions.create(
    max_tokens=100,
    model="gpt-3.5-turbo",  # модель для выбора
    messages=messages,  # сообщение
    temperature=0,  # степень креативности ответа
)
print(chat_completion.choices[0].message.content)

 

Если у вас возникнут вопросы или трудности, не стесняйтесь обращаться за помощью в комментариях к этому уроку. Мы всегда готовы помочь! 💡💬


Сделал все как в шаблоне, но возникла вот такая ошибка: 

---------------------------------------------------------------------------
AuthenticationError                       Traceback (most recent call last)
<ipython-input-19-8325342c663a> in <cell line: 14>()
   12 ]
   13 
---> 14 chat_completion = client.chat.completions.create(
   15     max_tokens=100,
   16     model="gpt-3.5-turbo",  # модель для выбора

4 frames

/usr/local/lib/python3.10/dist-packages/openai/_base_client.py in _request(self, cast_to, options, remaining_retries, stream, stream_cls)
 1039 
 1040             log.debug("Re-raising status error")
-> 1041             raise self._make_status_error_from_response(err.response) from None
 1042 
 1043         return self._process_response(
AuthenticationError: Error code: 401 - {'error': {'message': 'Your authentication token is not from a valid issuer.', 'type': 'invalid_request_error', 'param': None, 'code': 'invalid_issuer'}}

@Александр_Помулев,  Вот в этом блоке кода:

openai_api_key = 'Мой ключ'

client = OpenAI(

    api_key=openai_api_key,

)

messages = [

    {

        "role": "user",  # Роль - ассистент или юзер

        "content": "1+1",  # Сам промпт для подачи в chatGPT

    }

]

chat_completion = client.chat.completions.create(

    max_tokens=100,

    model="gpt-3.5-turbo",  # модель для выбора

    messages=messages,  # сообщение

    temperature=0,  # степень креативности ответа

)

print(chat_completion.choices[0].message.content)

А у вас есть официальный АПИ-ключ от OpenAI и пополненный баланс?
Если нет и вы используете ключ из бота, то надо другой блок кода запускать.
--> 937     return self._request(
  938         cast_to=cast_to,
  939         options=options,
  940         stream=stream,
  941         stream_cls=stream_cls,
  942         remaining_retries=remaining_retries,
  943     )
File /opt/conda/lib/python3.10/site-packages/openai/_base_client.py:1041, in SyncAPIClient._request(self, cast_to, options, remaining_retries, stream, stream_cls)
 1038         err.response.read()
 1040     log.debug("Re-raising status error")
-> 1041     raise self._make_status_error_from_response(err.response) from None
 1043 return self._process_response(
 1044     cast_to=cast_to,
 1045     options=options,
 (...)
 1049     retries_taken=options.get_max_retries(self.max_retries) - retries,
 1050 )
PermissionDeniedError: Error code: 403 - {'detail': 'Could not validate token'}

@Чельдиева_Людмила, это в каком блоке кода?

@Иван_Александров, если ключ курса давно получали, то возможно истек срок действия (6 мес)

PermissionDeniedError: Error code: 403 - {'error': {'code': 'unsupported_country_region_territory', 'message': 'Country, region, or territory not supported', 'param': None, 'type': 'request_forbidden'}}
возникла такая ошибка. Что делать? VPN подключен, страна где OpenAI не блокируется.
А как вы включаете ВПН? Нужно весь трафик с компьютера через него запускать. Если расширение в браузере, то не будет работать.

При запуске скрипта выходит ошибка

Ответ от OpenAI: "Это сообщение об ошибке вы увидите при попытке зарегистрироваться или создать ключ API из места, которое не входит в число поддерживаемых нами стран"

Что делать в этом случае?

Какую ячейку запускаете? Судя по ошибке, пытаетесь воспользоваться ключом от опенАИ - он в России не работает. В колабе запускается.

Здравствуйте. появилась ошибка при запуске скопированного кода. Как исправить? 

@Андрей_Рончинский, судя по ошибке закончились токены. Осталось понять, это ваш api ключ или наш) 

а что делать, если требует подтвердить номер телефона?

@Евгения_Горлачева, действовать по первому пункту из инструкции, на российские номера не получится зарегистрироваться. Либо, если есть знакомые за рубежом - попросить помочь.

к сожалению, не удалось найти кнопку + create new secret key, 

@Евгения_Горлачева, после перехода по ссылке из пункта 2 и авторизации на сайте - открывается окно - там кнопка в 2-х местах:

PermissionDeniedError: Error code: 403 - {'error': {'message': 'Country, region, or territory not supported', 'type': 'request_forbidden', 'param': None, 'code': 'unsupported_country_region_territory'}}
Пытаюсь зайти из РФ. Это можно как-то обойти?

@Андрей_Коржун, я так понимаю это при использовании ключа от OpenAI.

либо ключ курса, либо из колаба

либо весь трафик компьютера через впн\прокси пускать

Получаю: You are unable to access</span> api.openai.com

Для этого теперь нужно на локальном компьютере поднимать VPN на весь трафик?

Хотя тут пишут что наоборот VPN может повредить: https://habr.com/ru/articles/741586/#comment_25648170

---> 15 chat_completion = client.chat.completions.create(
     16     max_tokens=100,
     17     model="gpt-3.5-turbo",  # модель для выбора
     18     messages=messages,  # сообщение
     19     temperature=0,  # степень креативности ответа
     20 )
     22 print(chat_completion.choices[0].message.content)

File ~/mambaforge/envs/llm/lib/python3.12/site-packages/openai/_utils/_utils.py:275, in required_args.<locals>.inner.<locals>.wrapper(*args, **kwargs)
    273             msg = f"Missing required argument: {quote(missing[0])}"
    274     raise TypeError(msg)
--> 275 return func(*args, **kwargs)

File ~/mambaforge/envs/llm/lib/python3.12/site-packages/openai/resources/chat/completions.py:663, in Completions.create(self, messages, model, frequency_penalty, function_call, functions, logit_bias, logprobs, max_tokens, n, presence_penalty, response_format, seed, stop, stream, temperature, tool_choice, tools, top_logprobs, top_p, user, extra_headers, extra_query, extra_body, timeout)
    611 @required_args(["messages", "model"], ["messages", "model", "stream"])
    612 def create(
    613     self,
   (...)
    661     timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
    662 ) -> ChatCompletion | Stream[ChatCompletionChunk]:
--> 663     return self._post(

...
</head>
<body>
  <div id="cf-wrapper">
    <div class="cf-alert cf-alert-error cf-cookie-error" id="cookie-alert" data-translate="enable_cookies">Please enable cookies.</div>
    <div id="cf-error-details" class="cf-error-details-wrapper">
      <div class="cf-wrapper cf-header cf-error-overview">
        <h1 data-translate="block_headline">Sorry, you have been blocked</h1>
        <h2 class="cf-subheadline"><span data-translate="unable_to_access">You are unable to access</span> api.openai.com</h2>
      </div><!-- /.header -->

      <div class="cf-section cf-highlight">
        <div class="cf-wrapper">
          <div class="cf-screenshot-container cf-screenshot-full">
            
              <span class="cf-no-screenshot error"></span>
            
          </div>
        </div>
      </div><!-- /.captcha-container -->

      <div class="cf-section cf-wrapper">
        <div class="cf-columns two">
          <div class="cf-column">
            <h2 data-translate="blocked_why_headline">Why have I been blocked?</h2>

            <p data-translate="blocked_why_detail">This website is using a security service to protect itself from online attacks. The action you just performed triggered the security solution. There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.</p>
          </div>

          <div class="cf-column">
            <h2 data-translate="blocked_resolve_headline">What can I do to resolve this?</h2>

            <p data-translate="blocked_resolve_detail">You can email the site owner to let them know you were blocked. Please include what you were doing when this page came up and the Cloudflare Ray ID found at the bottom of this page.</p>
          </div>
        </div>
      </div><!-- /.section -->

      <div class="cf-error-footer cf-wrapper w-240 lg:w-full py-10 sm:py-4 sm:px-8 mx-auto text-center sm:text-left border-solid border-0 border-t border-gray-300">
  <p class="text-13">
    <span class="cf-footer-item sm:block sm:mb-1">Cloudflare Ray ID: <strong class="font-semibold">86150afc7f5e82c4</strong></span>
    <span class="cf-footer-separator sm:hidden">&bull;</span>
    <span id="cf-footer-item-ip" class="cf-footer-item hidden sm:block sm:mb-1">
      Your IP:
      <button type="button" id="cf-footer-ip-reveal" class="cf-footer-ip-reveal-btn">Click to reveal</button>
      <span class="hidden" id="cf-footer-ip">193.232.183.71</span>
      <span class="cf-footer-separator sm:hidden">&bull;</span>
    </span>
    <span class="cf-footer-item sm:block sm:mb-1"><span>Performance &amp; security by</span> <a rel="noopener noreferrer" href="https://www.cloudflare.com/5xx-error-landing" id="brand_link" target="_blank">Cloudflare</a></span>
    
  </p>
  <script>(function(){function d(){var b=a.getElementById("cf-footer-item-ip"),c=a.getElementById("cf-footer-ip-reveal");b&&"classList"in b&&(b.classList.remove("hidden"),c.addEventListener("click",function(){c.classList.add("hidden");a.getElementById("cf-footer-ip").classList.remove("hidden")}))}var a=document;document.addEventListener&&a.addEventListener("DOMContentLoaded",d)})();</script>
</div><!-- /.error-footer -->


    </div><!-- /#cf-error-details -->
  </div><!-- /#cf-wrapper -->

  <script>
  window._cf_translation = {};
  
  
</script>

</body>
</html>

@Grigorii_Tarasov, если вы про апи ключ от опенАИ, то да - из России теперь не работает, можно из колаба запускать. Али-ключ курса работает из России.

Токен сгенерил, но получил ошибку

@Aleksandr_Erygin, Если речь про ключ от OpenAI, то надо проверить баланс. Обычно при регистрации давали 5$ на депозит, но теперь не всегда, особенно зависит от страны из и номера телефона с которого регистрировались. Судя по ошибке, квота закончилась.

Вместо openai.api_key = 'Ваш OpenAI ключ' должно быть openai_api_key = 'Ваш OpenAI ключ'

@Юрий_Прудников, Исправили, спасибо!

Добрый день!

Для экспериментирующих в Colab'е делюсь наблюдением.

Возможная ошибка кода представленного на этом степе Курса:

---------------------------------------------------------------------------
APIRemovedInV1                            Traceback (most recent call last)
<ipython-input-9-1b72dcf5578c> in <cell line: 5>()
    3 openai.api_key = api_key
    4 
----> 5 chat_completion = openai.ChatCompletion.create(
    6     model="gpt-3.5-turbo",
    7     messages=[
2 frames
/usr/local/lib/python3.10/dist-packages/openai/lib/_old_api.py in __load__(self)
   31     @override
   32     def __load__(self) -> None:
---> 33         raise APIRemovedInV1(symbol=self._symbol)
   34 
   35 

APIRemovedInV1,  случается потому что представленный код больше не совместим с новыми интерфейсами библиотеки.

Класс ChatCompletion был удален в версии 1.0.0 SDK OpenAI и введен новый способ взаимодействия с API, который требует создания экземпляра клиента и использования методов этого клиента для выполнения запросов.

Вместо удаленного ChatCompletion, теперь следует использовать client.chat_completions.create:

from openai import OpenAI
client = OpenAI(
              api_key=api_key,
)
chat_completion = client.chat.completions.create(
  messages=[
      {
          "role": "user",
          "content": "One plus one?",
      }
  ],
  model="gpt-3.5-turbo",
)
print(chat_completion.choices[0].message.content)
One plus one equals two.

Удачи!