Token
- Dominant language
- Ruby
- Stars
- 4.5k
- Forks
- 802
- PR merge metrics
- No merged PRs in 30d
Description
import requests
import json
def get_token():
url = "https://ngw.devices.sberbank.ru:9443/api/v2/oauth"
payload = 'scope=GIGACHAT_API_PERS'
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json',
'RqUID': '<ВАШ Client Secret>',
'Authorization': 'Basic <ВАШИ Данные Авторизации>'
}
response = requests.post(url, headers=headers, data=payload, verify='chain.pem')
return response.json()
# Сохраните полученный токен
token = get_token()['access_token']
def get_answer(text, access_token):
url = "https://gigachat.devices.sberbank.ru/api/v1/chat/completions"
payload = json.dumps({
"model": "GigaChat", # или "GigaChat-Pro" (50k бесплатных токенов)
"messages": [
{
"role": "user",
"content": text # ваш запрос
}
],
"temperature": 1, # креативность ответа (0–1)
"top_p": 0.1, # фильтрация токенов
"n": 1, # число вариантов ответа
"stream": False, # потоковая передача
"max_tokens": 512, # макс. длина ответа
"repetition_penalty": 1 # штраф за повторы
})
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': f'Bearer {access_token}'
}
response = requests.post(url, headers=headers, data=payload, verify='chain.pem')
return response.json()
# Пример запроса: сгенерировать функцию на Python
request = "Напиши функцию на Python, которая вычисляет среднее арифметическое списка чисел."
response = get_answer(request, token)
print(response['choices'][0]['message']['content'])
def get_img_info(text, access_token):
url = "https://gigachat.devices.sberbank.ru/api/v1/chat/completions"
payload = json.dumps({
"model": "GigaChat",
"messages": [
{
"role": "system",
"content": "Ты — Василий Кандинский"
},
{
"role": "user",
"content": text
}
],
"function_call": "auto"
})
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Authorization': f'Bearer {access_token}'
}
response = requests.post(url, headers=headers, data=payload, verify='chain.pem')
return response.json()
def download_image(fileid, access_token):
url = f"https://gigachat.devices.sberbank.ru/api/v1/files/{fileid}/content"
headers = {
'Accept': 'application/jpg',
'Authorization': f'Bearer {access_token}'
}
response = requests.get(url, headers=headers, verify='chain.pem')
return response.content
# Пример: сгенерировать изображение
prompt = "Абстрактная композиция в стиле Кандинского: круги, линии, яркие цвета."
img_response = get_img_info(prompt, token)
# Извлекаем ID изображения из ответа
import re
from bs4 import BeautifulSoup
content = img_response['choices'][0]['message']['content']
img_tag = re.findall(r'', content)[0]
fileid = BeautifulSoup(img_tag, 'html.parser').find('img')['src']
# Сохраняем изображение
with open("generated_image.png", "wb") as f:
f.write(download_image(fileid, token))
{
"choices": [
{
"message": {
"content": "Текст ответа или HTML с ",
"role": "assistant"
},
"index": 0,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 23,
"completion_tokens": 128,
"total_tokens": 151
}
}
Contributor guide
Assessment
This issue has not been assessed yet.