Token

Aperta
#320 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
5/100
Tipo di issue
Funzionalità
Chiarezza
Da chiarire
Stato di attività
Ferma
Stack tecnologico
python
Ambito
api

Direzione di ricerca

La issue contiene un esempio Python incollato che utilizza la GigaChat API, ma non indica alcun file gemoji, test o modifica richiesta. Verifica innanzitutto se è stata aperta nel repository previsto e chiedi un ambito concreto; non è possibile definire il completamento finché il segnalatore non spiega cosa dovrebbe cambiare.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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

Lingua principale
Ruby
Stelle
4.5k
Fork
804
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di github/gemoji

Tutte le issue di github/gemoji

Issue simili

Altre issue su Ruby

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.