Token
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'<img.*?>', 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
}
}
verify='chain.pem'
temperature=0.5