Загрузка данных
#!/bin/bash
# ============================================
# Запросы к GigaChat
# ============================================
### API Gateway: https://ai.giga.atb.su:8080 - единая точка входа для всех API-запросов
# Базовые переменные
API_URL="https://ai.giga.atb.su:8080"
KEY_PATH="/opt/goprodigy/certs/gigachat_user.key"
CERT_PATH="/opt/goprodigy/certs/gigachat_user.pem"
CACERT_PATH="/opt/goprodigy/certs/root_ca.crt"
SESSION_ID="dfa87a40-99a9-42c4-b810-6c7caa1e1e8b"
echo "=========================================="
echo "1. Показать доступные модели"
echo "=========================================="
curl -X GET --url "${API_URL}/v1/models" \
--key "${KEY_PATH}" \
--cert "${CERT_PATH}" \
-k | jq
echo -e "\n\n=========================================="
echo "2. GOPRODIGY - metrics"
echo "=========================================="
curl -X GET --url 'http://tplss-gigatest001:8081/metrics'
echo -e "\n\n=========================================="
echo "3. GOPRODIGY - chat completions"
echo "=========================================="
curl -X POST --url "${API_URL}/v1/chat/completions" \
--key "${KEY_PATH}" \
--cert "${CERT_PATH}" \
--cacert "${CACERT_PATH}" \
--header 'Content-Type: application/json' \
--header "X-Session-ID: ${SESSION_ID}" \
--data '{ "model": "GigaChat-Max", "messages": [{"role": "user","content": "what is ansible?"}], "temperature": 1.0, "stream": false}' \
-kv | jq
echo -e "\n\n=========================================="
echo "4. WMCORE - информация о моделях"
echo "=========================================="
curl -X GET --url 'http://tplss-gigatest001:8101/info/json' | jq
echo -e "\n\n=========================================="
echo "5. WMCORE - metrics"
echo "=========================================="
curl -X GET --url 'http://tplss-gigatest001:8101/metrics'
echo -e "\n\n=========================================="
echo "6. WMCORE - таблица"
echo "=========================================="
curl -X GET --url 'http://tplss-gigatest001:8101/info/table'
echo -e "\n\n=========================================="
echo "7. GIGAFILTER - info"
echo "=========================================="
curl -X GET --url 'http://tplss-gigatest001:8301/info/json' | jq
echo -e "\n\n=========================================="
echo "8. GIGAFILTER - metrics"
echo "=========================================="
curl -X GET --url 'http://tplss-gigatest001:8301/metrics'
echo -e "\n\n=========================================="
echo "9. GIGAFILTER - chat completions"
echo "=========================================="
curl -X POST --url "${API_URL}/v1/chat/completions" \
--key "${KEY_PATH}" \
--cert "${CERT_PATH}" \
--cacert "${CACERT_PATH}" \
--header 'Content-Type: application/json' \
--header "X-Session-ID: ${SESSION_ID}" \
--data '{ "model": "GigaChat-Max", "messages": [{"role": "user","content": "Крым?"}]}' \
-kv
echo -e "\n\n=========================================="
echo "10. Embedder - info"
echo "=========================================="
curl -X GET --url 'http://tplss-gigatest001:27961/info/json' | jq
echo -e "\n\n=========================================="
echo "11. Embedder - metrics"
echo "=========================================="
curl -X GET --url 'http://tplss-gigatest001:27961/metrics'
echo -e "\n\n=========================================="
echo "12. Embedder - embeddings"
echo "=========================================="
curl -X POST --url "${API_URL}/v1/embeddings" \
--key "${KEY_PATH}" \
--cert "${CERT_PATH}" \
--cacert "${CACERT_PATH}" \
--header 'Content-Type: application/json' \
--data '{ "model": "Embeddings", "input": "Какая температура может быть на Солнце?"}' \
-k
echo -e "\n\n=========================================="
echo "13. Tokenizer - count tokens (из файла)"
echo "=========================================="
curl -X POST "${API_URL}/v1/tokens/count" \
--header 'Content-Type: application/json' \
--key "${KEY_PATH}" \
--cert "${CERT_PATH}" \
--cacert "${CACERT_PATH}" \
--data @request-tokenizer.json \
-v
echo -e "\n\n=========================================="
echo "14. Tokenizer - count tokens (прямой запрос)"
echo "=========================================="
curl -X POST "${API_URL}/v1/tokens/count" \
--header 'Content-Type: application/json' \
--key "${KEY_PATH}" \
--cert "${CERT_PATH}" \
--cacert "${CACERT_PATH}" \
--data '{"model": "GigaChat-Max", "input": "Какая температура может быть на Солнце?" }'
import urllib.request
import urllib.error
import urllib.parse
import json
import ssl
import os
# ============================================
# АВТОМАТИЗАЦИЯ ПУТЕЙ
# ============================================
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
CERTS_DIR = os.path.join(BASE_DIR, "certs")
# Пути к сертификатам
KEY_PATH = os.path.join(CERTS_DIR, "gigachat_user.key")
CERT_PATH = os.path.join(CERTS_DIR, "gigachat_user.pem")
CACERT_PATH = os.path.join(CERTS_DIR, "root_ca.pem")
# Базовые переменные
API_URL = "https://ai.giga.atb.su:8080"
SESSION_ID = "dfa87a40-99a9-42c4-b810-6c7caa1e1e8b"
# ============================================
# Вспомогательная функция для запросов
# ============================================
def fetch(title, url, method="GET", data=None, headers=None, use_certs=False, verify_ssl=True, is_file=False):
print(f"\n==========================================")
print(f"{title}")
print(f"==========================================")
req_headers = headers or {}
payload = None
# Обработка тела запроса (data)
if data:
if is_file:
try:
with open(data, 'rb') as f:
payload = f.read()
except FileNotFoundError:
print(f"[ОШИБКА] Файл '{data}' не найден.")
return
elif isinstance(data, dict):
payload = json.dumps(data).encode('utf-8')
elif isinstance(data, str):
payload = data.encode('utf-8')
# Создание объекта запроса
req = urllib.request.Request(url, data=payload, headers=req_headers, method=method)
# Настройка SSL контекста
ctx = None
if url.startswith("https"):
if verify_ssl:
# Используем корневой сертификат, если требуется верификация (аналог --cacert)
try:
ctx = ssl.create_default_context(cafile=CACERT_PATH)
except Exception as e:
print(f"[ОШИБКА SSL] Не удалось загрузить корневой сертификат: {e}")
ctx = ssl._create_unverified_context()
else:
# Отключение проверки (аналог флага -k)
ctx = ssl._create_unverified_context()
# Добавление клиентского сертификата (--cert и --key)
if use_certs:
try:
ctx.load_cert_chain(certfile=CERT_PATH, keyfile=KEY_PATH)
except Exception as e:
print(f"[ОШИБКА SSL] Не удалось загрузить клиентский сертификат/ключ: {e}")
return
# Выполнение запроса
try:
with urllib.request.urlopen(req, context=ctx) as response:
body = response.read().decode('utf-8')
# Имитация работы утилиты jq (форматирование JSON)
try:
parsed_json = json.loads(body)
print(json.dumps(parsed_json, indent=2, ensure_ascii=False))
except json.JSONDecodeError:
print(body)
except urllib.error.HTTPError as e:
print(f"[HTTP ОШИБКА] Код: {e.code} - {e.reason}")
print(e.read().decode('utf-8', errors='ignore'))
except urllib.error.URLError as e:
print(f"[СЕТЕВАЯ ОШИБКА] {e.reason}")
except Exception as e:
print(f"[НЕПРЕДВИДЕННАЯ ОШИБКА] {e}")
# ============================================
# Запросы к GigaChat
# ============================================
# 1. Показать доступные модели (GET, использует сертификаты, -k)
fetch(
"1. Показать доступные модели",
f"{API_URL}/v1/models",
method="GET",
use_certs=True,
verify_ssl=False
)
# 2. GOPRODIGY - metrics (Обычный HTTP)
fetch(
"2. GOPRODIGY - metrics",
"http://tplss-gigatest001:8081/metrics",
method="GET"
)
# 3. GOPRODIGY - chat completions (POST, сертификаты, json, -k)
fetch(
"3. GOPRODIGY - chat completions",
f"{API_URL}/v1/chat/completions",
method="POST",
headers={"Content-Type": "application/json", "X-Session-ID": SESSION_ID},
data={
"model": "GigaChat-Max",
"messages": [{"role": "user", "content": "what is ansible?"}],
"temperature": 1.0,
"stream": False
},
use_certs=True,
verify_ssl=False
)
# 4. WMCORE - информация о моделях
fetch(
"4. WMCORE - информация о моделях",
"http://tplss-gigatest001:8101/info/json",
method="GET"
)
# 5. WMCORE - metrics
fetch(
"5. WMCORE - metrics",
"http://tplss-gigatest001:8101/metrics",
method="GET"
)
# 6. WMCORE - таблица
fetch(
"6. WMCORE - таблица",
"http://tplss-gigatest001:8101/info/table",
method="GET"
)
# 7. GIGAFILTER - info
fetch(
"7. GIGAFILTER - info",
"http://tplss-gigatest001:8301/info/json",
method="GET"
)
# 8. GIGAFILTER - metrics
fetch(
"8. GIGAFILTER - metrics",
"http://tplss-gigatest001:8301/metrics",
method="GET"
)
# 9. GIGAFILTER - chat completions (POST, сертификаты, json, -k)
fetch(
"9. GIGAFILTER - chat completions",
f"{API_URL}/v1/chat/completions",
method="POST",
headers={"Content-Type": "application/json", "X-Session-ID": SESSION_ID},
data={
"model": "GigaChat-Max",
"messages": [{"role": "user", "content": "Крым?"}]
},
use_certs=True,
verify_ssl=False
)
# 10. Embedder - info
fetch(
"10. Embedder - info",
"http://tplss-gigatest001:27961/info/json",
method="GET"
)
# 11. Embedder - metrics
fetch(
"11. Embedder - metrics",
"http://tplss-gigatest001:27961/metrics",
method="GET"
)
# 12. Embedder - embeddings (POST, сертификаты, json, -k)
fetch(
"12. Embedder - embeddings",
f"{API_URL}/v1/embeddings",
method="POST",
headers={"Content-Type": "application/json"},
data={
"model": "Embeddings",
"input": "Какая температура может быть на Солнце?"
},
use_certs=True,
verify_ssl=False
)
# 13. Tokenizer - count tokens (из файла) (POST, сертификаты, файл, строгая проверка SSL)
# В bash-скрипте нет флага -k, поэтому verify_ssl=True (использует CACERT_PATH)
fetch(
"13. Tokenizer - count tokens (из файла)",
f"{API_URL}/v1/tokens/count",
method="POST",
headers={"Content-Type": "application/json"},
data=os.path.join(BASE_DIR, "request-tokenizer.json"),
is_file=True,
use_certs=True,
verify_ssl=True
)
# 14. Tokenizer - count tokens (прямой запрос) (POST, сертификаты, json, строгая проверка SSL)
fetch(
"14. Tokenizer - count tokens (прямой запрос)",
f"{API_URL}/v1/tokens/count",
method="POST",
#headers={"Content-Type": "application/json"},
headers={
"Content-Type": "application/json",
#"X-Session-ID": SESSION_ID,
#"Accept": "application/json"
},
data={
"model": "Embeddings",
"input": "test" #"Какая температура может быть на Солнце?"
},
use_certs=True,
verify_ssl=False
)
C:\Users\tasenko\Downloads\GigaChat (2)\GigaChat>run.bat 1.py
==========================================
1. Показать доступные модели
==========================================
{
"object": "list",
"data": [
{
"id": "GigaChat-Max",
"object": "model",
"owned_by": "salutedevices",
"type": "chat"
},
{
"id": "Embeddings",
"object": "model",
"owned_by": "salutedevices",
"type": "embedder"
}
]
}
==========================================
2. GOPRODIGY - metrics
==========================================
[СЕТЕВАЯ ОШИБКА] [Errno 11001] getaddrinfo failed
==========================================
4. WMCORE - информация о моделях
==========================================
[СЕТЕВАЯ ОШИБКА] [Errno 11001] getaddrinfo failed
==========================================
5. WMCORE - metrics
==========================================
[СЕТЕВАЯ ОШИБКА] [Errno 11001] getaddrinfo failed
==========================================
6. WMCORE - таблица
==========================================
[СЕТЕВАЯ ОШИБКА] [Errno 11001] getaddrinfo failed
==========================================
7. GIGAFILTER - info
==========================================
[СЕТЕВАЯ ОШИБКА] [Errno 11001] getaddrinfo failed
==========================================
8. GIGAFILTER - metrics
==========================================
[СЕТЕВАЯ ОШИБКА] [Errno 11001] getaddrinfo failed
==========================================
10. Embedder - info
==========================================
[СЕТЕВАЯ ОШИБКА] [Errno 11001] getaddrinfo failed
==========================================
11. Embedder - metrics
==========================================
[СЕТЕВАЯ ОШИБКА] [Errno 11001] getaddrinfo failed
==========================================
13. Tokenizer - count tokens (из файла)
==========================================
[СЕТЕВАЯ ОШИБКА] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1010)
==========================================
14. Tokenizer - count tokens (прямой запрос)
==========================================
[HTTP ОШИБКА] Код: 500 - Internal Server Error
{"status":500,"message":"Internal Server Error"}
C:\Users\tasenko\Downloads\GigaChat (2)\GigaChat>
==========================================
[HTTP ОШИБКА] Код: 500 - Internal Server Error
{"status":500,"message":"Internal Server Error"}
C:\Users\tasenko\Downloads\GigaChat (2)\GigaChat>
==========================================
[HTTP ОШИБКА] Код: 500 - Internal Server Error
{"status":500,"message":"Internal Server Error"}
C:\Users\tasenko\Downloads\GigaChat (2)\GigaChat>
==========================================
[HTTP ОШИБКА] Код: 500 - Internal Server Error
{"status":500,"message":"Internal Server Error"}
==========================================
[HTTP ОШИБКА] Код: 500 - Internal Server Error
==========================================
==========================================
==========================================
[HTTP ОШИБКА] Код: 500 - Internal Server Error
{"status":500,"message":"Internal Server Error"}
C:\Users\tasenko\Downloads\GigaChat (2)\GigaChat>run.bat 1.py
==========================================
1. Показать доступные модели
==========================================
{
"object": "list",
"data": [
{
"id": "GigaChat-Max",
"object": "model",
"owned_by": "salutedevices",
"type": "chat"
},
{
"id": "Embeddings",
"object": "model",
"owned_by": "salutedevices",
"type": "embedder"
}
]
}
==========================================
2. GOPRODIGY - metrics
==========================================
[СЕТЕВАЯ ОШИБКА] [Errno 11001] getaddrinfo failed
==========================================
4. WMCORE - информация о моделях
==========================================
[СЕТЕВАЯ ОШИБКА] [Errno 11001] getaddrinfo failed
==========================================
5. WMCORE - metrics
==========================================
[СЕТЕВАЯ ОШИБКА] [Errno 11001] getaddrinfo failed
==========================================
6. WMCORE - таблица
==========================================
[СЕТЕВАЯ ОШИБКА] [Errno 11001] getaddrinfo failed
==========================================
7. GIGAFILTER - info
==========================================
[СЕТЕВАЯ ОШИБКА] [Errno 11001] getaddrinfo failed
==========================================
8. GIGAFILTER - metrics
==========================================
[СЕТЕВАЯ ОШИБКА] [Errno 11001] getaddrinfo failed
==========================================
10. Embedder - info
==========================================
[СЕТЕВАЯ ОШИБКА] [Errno 11001] getaddrinfo failed
==========================================
11. Embedder - metrics
==========================================
[СЕТЕВАЯ ОШИБКА] [Errno 11001] getaddrinfo failed
==========================================
13. Tokenizer - count tokens (из файла)
==========================================
[СЕТЕВАЯ ОШИБКА] [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1010)
==========================================
14. Tokenizer - count tokens (прямой запрос)
==========================================
[HTTP ОШИБКА] Код: 500 - Internal Server Error
{"status":500,"message":"Internal Server Error"}