Как использовать 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?