Token

未关闭
#320 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
5/100
Issue 类型
功能
描述清晰度
需要澄清
活跃度
停滞
技术栈
python
领域
api

调研方向

该 issue 包含一段使用 GigaChat API 的粘贴 Python 示例,但没有指明任何 gemoji 文件、测试或请求的更改。首先确认这是否是在预期的仓库中提交的,并要求提供具体范围;在报告者说明应更改什么之前,无法定义完成标准。

由索引模型根据 Issue 内容生成。

描述

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

主要语言
Ruby
星标
4.5k
派生
804
PR 合并指标
30 天内没有已合并 PR

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

github/gemoji 的其他 Issue

查看 github/gemoji 的全部 Issue

相似的 Issue

更多 Ruby Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。