Часть 1. Ответы
- Токен — единица текста (слово/часть слова/символ). Методы: по словам, по символам, по подсловам (subword/BPE — в GPT/Gemini).
- Лимит контекста = запрос + ответ вместе. Чем длиннее промпт, тем меньше места на ответ.
- Приложение шлёт запрос → API передаёт серверу → модель обрабатывает → возвращает ответ (вы → официант → кухня).
- Ключ в коде попадает в git и к посторонним. При утечке: создать новый ключ, отключить старый, включить мониторинг.
- Новый:
genai.Client(api_key=...)+client.models.generate_content(model=..., contents=[...]); старый —genai.configure()+GenerativeModel(...).generate_content().
Часть 2. Эталон проекта
# .env
GEMINI_API_KEY=ваш_ключ
# .gitignore
.env
.venv/
__pycache__/
# main.py
from google import genai
from dotenv import load_dotenv
import os
load_dotenv()
api_key = os.getenv("GEMINI_API_KEY")
if not api_key:
raise RuntimeError("GEMINI_API_KEY не задан (.env)")
client = genai.Client(api_key=api_key)
response = client.models.generate_content(
model="gemini-2.0-flash",
contents=["Объясни, что такое токенизация, в 3 предложениях."],
)
print(response.text)
Часть 3. Со звёздочкой
# main.py (фрагмент)
prompt = "Объясни токенизацию в 3 предложениях."
n = client.models.count_tokens(model="gemini-2.0-flash", contents=[prompt])
print("Токенов на входе:", n.total_tokens)
try:
r = client.models.generate_content(model="gemini-2.0-flash", contents=[prompt])
print(r.text)
except Exception as e:
print("Ошибка API:", e)
⚠️ Имена полей (
total_tokens) и модель сверяйте с актуальным SDK.