gemoji icon indicating copy to clipboard operation
gemoji copied to clipboard

Token

Open myltik1702 opened this issue 2 months ago • 2 comments

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 } }

myltik1702 avatar Nov 25 '25 20:11 myltik1702

verify='chain.pem'

myltik1702 avatar Nov 25 '25 20:11 myltik1702

temperature=0.5

myltik1702 avatar Nov 25 '25 20:11 myltik1702