Added code samples for AI-Agents

This commit is contained in:
2025-12-17 20:22:46 +03:00
parent d66aed35d6
commit 0885618b25
29 changed files with 2007 additions and 0 deletions

123
scripts/analyze_usage.py Normal file
View File

@@ -0,0 +1,123 @@
"""Скрипт для анализа использования токенов GigaChat."""
import argparse
import json
from collections import defaultdict
from datetime import datetime
from pathlib import Path
def calculate_cost(tokens: int, model: str = "Lite") -> float:
"""Рассчитать стоимость токенов."""
rates = {
"Lite": 0.2 / 1000,
"Pro": 1.5 / 1000,
"Max": 1.95 / 1000,
}
rate = rates.get(model, rates["Lite"])
return tokens * rate
def analyze_usage(data_file: str, month: str = None):
"""Проанализировать использование токенов."""
if not Path(data_file).exists():
print(f"Файл {data_file} не найден. Создайте файл с данными использования.")
print("\nФормат данных (JSON):")
print(json.dumps(
{
"usage": [
{
"user_id": "user_123",
"date": "2025-12-15",
"tokens": 1500,
"model": "Lite",
}
]
},
indent=2,
))
return
with open(data_file, "r", encoding="utf-8") as f:
data = json.load(f)
usage_records = data.get("usage", [])
if month:
# Фильтруем по месяцу
usage_records = [
record
for record in usage_records
if record.get("date", "").startswith(month)
]
if not usage_records:
print("Нет данных для анализа")
return
# Статистика по моделям
model_stats = defaultdict(lambda: {"tokens": 0, "requests": 0})
user_stats = defaultdict(lambda: {"tokens": 0, "requests": 0})
total_tokens = 0
for record in usage_records:
tokens = record.get("tokens", 0)
model = record.get("model", "Lite")
user_id = record.get("user_id", "unknown")
model_stats[model]["tokens"] += tokens
model_stats[model]["requests"] += 1
user_stats[user_id]["tokens"] += tokens
user_stats[user_id]["requests"] += 1
total_tokens += tokens
# Выводим отчет
print("=" * 50)
print(f"GigaChat Usage Report")
if month:
print(f"Period: {month}")
print("=" * 50)
print(f"\nTotal tokens used: {total_tokens:,}")
print("\nBy Model:")
total_cost = 0
for model, stats in sorted(model_stats.items()):
cost = calculate_cost(stats["tokens"], model)
total_cost += cost
print(f" {model}:")
print(f" Tokens: {stats['tokens']:,}")
print(f" Requests: {stats['requests']}")
print(f" Cost: ₽{cost:,.2f}")
print(f"\nTotal cost: ₽{total_cost:,.2f}")
print("\nTop Users:")
top_users = sorted(user_stats.items(), key=lambda x: x[1]["tokens"], reverse=True)[:10]
for user_id, stats in top_users:
print(f" {user_id}: {stats['tokens']:,} tokens ({stats['requests']} requests)")
def main():
"""Главная функция."""
parser = argparse.ArgumentParser(description="Анализ использования токенов GigaChat")
parser.add_argument(
"--file",
type=str,
default="usage_data.json",
help="Файл с данными использования",
)
parser.add_argument(
"--month",
type=str,
default=None,
help="Месяц для анализа (формат: YYYY-MM)",
)
args = parser.parse_args()
analyze_usage(args.file, args.month)
if __name__ == "__main__":
main()