Пример 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.