💻 Примеры: Gemini API

← К оглавлению урока

⚡ Первый запрос

# main.py
from google import genai
client = genai.Client(api_key="...")
r = client.models.generate_content(
    model="gemini-2.0-flash", contents=["How does AI work?"])
print(r.text)

Пример 1. Первый запрос к Gemini (как в лекции)

Самый простой вариант — ключ прямо в коде. Так делать нельзя в реальных проектах (см. Пример 2), но для первого запуска показателен.

# main.py
from google import genai

# ⚠️ только для демонстрации — НЕ храните ключ в коде!
client = genai.Client(api_key="GEMINI_API_KEY")  # замените на свой ключ

response = client.models.generate_content(
    model="gemini-2.0-flash",          # flash — быстрая лёгкая модель
    contents=["How does AI work?"],    # список с промптом
)
print(response.text)

Пример 2. Безопасно: .env (как в лекции)

# .env  (НЕ коммитить — добавить в .gitignore!)
GEMINI_API_KEY=ваш_реальный_ключ
# .gitignore
.env
.venv/
__pycache__/
# main.py
from google import genai
from dotenv import load_dotenv
import os

load_dotenv()                              # подгружаем .env
api_key = os.getenv("GEMINI_API_KEY")      # читаем ключ из окружения

client = genai.Client(api_key=api_key)
response = client.models.generate_content(
    model="gemini-2.0-flash",
    contents=["How to keep API key secret?"],
)
print(response.text)

Пример 3. Подсчёт токенов (best practice, вне лекции)

Чтобы не упереться в лимит и контролировать стоимость, считайте токены до запроса.

# count_tokens.py
from google import genai
import os
client = genai.Client(api_key=os.getenv("GEMINI_API_KEY"))

prompt = "Объясни токенизацию простыми словами."
info = client.models.count_tokens(model="gemini-2.0-flash", contents=[prompt])
print("Токенов во входе:", info.total_tokens)
⚠️ Для OpenAI-моделей токены считают библиотекой tiktoken. Точное имя поля ответа (total_tokens) зависит от версии SDK — сверяйтесь с документацией.

Пример 4. Потоковый вывод (streaming, вне лекции)

Для чат-интерфейсов ответ удобно показывать по мере генерации.

# stream.py
from google import genai
import os
client = genai.Client(api_key=os.getenv("GEMINI_API_KEY"))

for chunk in client.models.generate_content_stream(
        model="gemini-2.0-flash", contents=["Напиши хайку про Python"]):
    print(chunk.text, end="", flush=True)

Пример 5. Обработка ошибок (best practice)

# safe_request.py
from google import genai
import os

client = genai.Client(api_key=os.getenv("GEMINI_API_KEY"))
try:
    r = client.models.generate_content(
        model="gemini-2.0-flash", contents=["Привет!"])
    print(r.text)
except Exception as e:                     # сеть, лимиты, неверный ключ
    print("Ошибка запроса к API:", e)
⚠️ Streaming и точные классы исключений зависят от версии google-genai. Подробную обработку таймаутов/ретраев разберём в уроке 04.