Как использовать GigaChat API в JavaScript fetch?

Хочу написать простой онлайн чат-бот используя GigaChat API. Подскажите как правильно формировать запрос в JavaScript fetch для доступа к GigaChat API. По имеющейся документации я не сообразил.

На сколько я понял требуется токен сначала: https://developers.sber.ru/docs/ru/gigachat/api/authorization#ispolzovanie-tokena2.

Затем используя токен формируем запрос: https://developers.sber.ru/docs/ru/gigachat/api/reference

Для токена вот такое написал не без помощи ИИ:

const getToken = async () => {
  const response = await fetch('https://cors-anywhere.herokuapp.com/https://ngw.devices.sberbank.ru:9443/api/v2/oauth', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer мой Client Secret',
    'RqUID': 'мой Client ID',
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  body: 'scope=GIGACHAT_API_PERS'
})
  .then(response => response.json())
  .then(data => {
    // Handle the response data
    console.log(data);
  })
  .catch(error => {
    console.error('Error:', error);
  });

  const data = await response.json();
  const accessToken = data.access_token;
  const expiresAt = data.expires_at;

  return { accessToken, expiresAt };
};

// Call the getToken function to obtain the token
getToken()
  .then((token) => {
    console.log('Access Token:', token.accessToken);
    console.log('Expires At:', token.expiresAt);
  })
  .catch((error) => {
    console.error('Error:', error);
  });

Сам запрос:

      fetch('https://cors-anywhere.herokuapp.com/https://gigachat.devices.sberbank.ru/api/v1/chat/completions', { 
       
        method: "POST",
        headers: {
            "Content-Type": "application/x-www-form-urlencoded",
            "Authorization": `Bearer мой токен/ и пробовал мой client secret`,
            "RqUID":"мой client id"

        },
        body: JSON.stringify({ messages: [message], model: "GigaChat:latest", temperature: 1, n: 1, stream: true, scope: "GIGACHAT_API_PERS"})
    })
    .then(response => response.json())
    .then(data => {
        console.log(data); // Log the response to the console for debugging
        const aiResponse = data.choices[0].message.content;
        appendMessage("AI", aiResponse);
    })
    .catch(error => {console.error(error); 
      
        } );

без https://cors-anywhere.herokuapp.com/ проблемы были с cross-origin.

А теперь проблема: POST https://cors-anywhere.herokuapp.com/https://gigachat.devices.sberbank.ru/api/v1/chat/completions 403 (Forbidden)

и

SyntaxError: Unexpected token 'S', "See /corsd"... is not valid JSON

Никаких рабочих примеров нигде не нашел. Может я не то делаю. Может кто подсказать в чем ошибка или как реализовать простой чат-бот с помощью GigaChat API?


Ответы (0 шт):