Краткое руководство¶
Запустите CodeGraph API за 10 минут.
Содержание¶
- Предварительные требования
- Быстрый старт: API-сервер
- Шаг 1: Клонирование и установка
- Шаг 2: Установка пароля базы данных
- Шаг 3: Инициализация базы данных
- Шаг 4: Создание администратора
- Шаг 5: Запуск API-сервера
- Шаг 6: Проверка установки
- Типовые сценарии использования
- Сценарий 1: Доступ к документации API
- Сценарий 2: Тестирование с примерами запросов
- Сценарий 3: Создание API-ключа для программного доступа
- Быстрая настройка
- Изменение порта сервера
- Включение автоматической перезагрузки для разработки
- Запуск с несколькими процессами (для продакшена)
- Устранение неполадок
- Не удалось подключиться к базе данных
- Порт уже используется
- PostgreSQL не запущена
- Обзор API-эндпоинтов
- Следующие шаги
- Обязательные материалы для чтения
- Расширенные темы
- Дополнительные интеграции
- Пример: Полный рабочий процесс
- Советы по успешному использованию
- Получение помощи
Предварительные требования¶
- Python 3.10+ (рекомендуется 3.11)
- PostgreSQL 15+ (должна быть запущена и доступна)
- Минимум 16 ГБ ОЗУ
- Не менее 50 ГБ свободного места на диске
Быстрый старт: API-сервер¶
Шаг 1: Клонируйте репозиторий и установите зависимости¶
# Клонируйте репозиторий
git clone <repository-url>
cd codegraph
# Создайте и активируйте виртуальное окружение
python -m venv venv
source venv/bin/activate # В Windows: venv\Scripts\activate
# Установите зависимости
pip install -r requirements.txt
Шаг 2: Установите пароль базы данных¶
# Установите пароль PostgreSQL
export DATABASE_URL="postgresql+asyncpg://postgres:your_password@localhost:5432/codegraph"
# В Windows PowerShell:
$env:DATABASE_URL="postgresql+asyncpg://postgres:your_password@localhost:5432/codegraph"
Примечание: Замените your_password на реальный пароль пользователя postgres в вашей PostgreSQL.
Шаг 3: Инициализация базы данных¶
# Создание базы данных и таблиц
python -m src.api.cli init-db
Ожидаемый вывод:
Database initialized successfully
Шаг 4: Создание администратора¶
# Создание учётной записи администратора
python -m src.api.cli create-admin --username admin --password admin123
# Для продакшена используйте надёжный пароль:
python -m src.api.cli create-admin --username admin --password <strong_password>
Ожидаемый вывод:
Admin user created: admin (ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
Шаг 5: Запуск API-сервера¶
# Запуск сервера
python -m src.api.cli run --host 127.0.0.1 --port 8000
Ожидаемый вывод:
INFO: Started server process [12345]
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8000
Шаг 6: Проверка установки¶
Вариант A: Использование Swagger UI (рекомендуется)¶
Откройте браузер и перейдите по адресу:
http://127.0.0.1:8000/api/docs
Вы увидите интерактивную документацию API, где сможете: 1. Нажать кнопку “Authorize” (Авторизация) 2. Использовать POST /api/v1/auth/token для получения JWT-токена 3. Интерактивно опробовать API-эндпоинты
Вариант B: Использование curl¶
# 1. Проверка работоспособности
curl http://127.0.0.1:8000/api/v1/health
# 2. Получение токена аутентификации
curl -X POST http://127.0.0.1:8000/api/v1/auth/token \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}'
Ожидаемый ответ:
{
"access_token": "eyJ...",
"refresh_token": "eyJ...",
"token_type": "bearer",
"expires_in": 1800
}
# 3. Использование токена (замените TOKEN на ваш access_token)
curl http://127.0.0.1:8000/api/v1/scenarios \
-H "Authorization: Bearer TOKEN"
Типовые случаи использования¶
Случай 1: Доступ к документации API¶
# Запуск сервера
python -m src.api.cli run --host 127.0.0.1 --port 8000
# Открыть в браузере:
# http://127.0.0.1:8000/api/docs (Swagger UI)
# http://127.0.0.1:8000/api/redoc (ReDoc)
Случай 2: Тестирование с примерами запросов¶
# Получение токена
TOKEN=$(curl -s -X POST http://127.0.0.1:8000/api/v1/auth/token \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"admin123"}' \
| python -c "import sys, json; print(json.load(sys.stdin)['access_token'])")
# Запрос сценариев
curl http://127.0.0.1:8000/api/v1/scenarios \
-H "Authorization: Bearer $TOKEN"
# Запуск сессии чата
curl -X POST http://127.0.0.1:8000/api/v1/chat \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"message": "Найти все функции, отвечающие за аутентификацию пользователей",
"scenario_id": "security_review"
}'
Случай 3: Создание API-ключа для программного доступа¶
# Сначала получите JWT-токен
TOKEN="ваш_токен_доступа"
# Создание API-ключа
curl -X POST http://127.0.0.1:8000/api/v1/auth/api-keys \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Мое приложение",
"expires_days": 365,
"scopes": ["scenarios:read", "query:execute"]
}'
# Использование API-ключа в запросах
curl http://127.0.0.1:8000/api/v1/scenarios \
-H "X-API-Key: ваш_api_ключ"
Быстрая настройка¶
Изменение порта сервера¶
# Запуск на другом порту
python -m src.api.cli run --host 127.0.0.1 --port 8080
Включение автоматической перезагрузки для разработки¶
# Автоматическая перезагрузка при изменении кода
python -m src.api.cli run --host 127.0.0.1 --port 8000 --reload
Запуск с несколькими рабочими процессами (для продакшена)¶
# Использование 4 рабочих процессов
python -m src.api.cli run --host 0.0.0.0 --port 8000 --workers 4
Устранение неполадок¶
Ошибка подключения к базе данных¶
# Ошибка: "база данных не существует"
# Решение: Выполните команду init-db
python -m src.api.cli init-db
# Ошибка: "ошибка аутентификации по паролю"
# Решение: Проверьте пароль в DATABASE_URL
export DATABASE_URL="postgresql+asyncpg://postgres:правильный_пароль@localhost:5432/codegraph"
Порт уже используется¶
# Ошибка: "адрес уже используется"
# Решение: Завершите процесс, использующий порт 8000
# Windows:
netstat -ano | findstr :8000
taskkill /F /PID <PID>
# Linux:
lsof -ti:8000 | xargs kill -9
# Или используйте другой порт:
python -m src.api.cli run --host 127.0.0.1 --port 8001
PostgreSQL не запущен¶
# Проверка состояния PostgreSQL
# Windows:
Get-Service postgresql*
# Linux:
sudo systemctl status postgresql
# Запустите PostgreSQL, если он не работает
sudo systemctl start postgresql
Обзор API-эндпоинтов¶
После запуска сервера становятся доступны следующие эндпоинты:
| Категория | Эндпоинт | Описание |
|---|---|---|
| Auth | POST /api/v1/auth/token | Получить JWT-токен доступа |
| POST /api/v1/auth/refresh | Обновить токен доступа | |
| POST /api/v1/auth/api-keys | Создать API-ключ | |
| Chat | POST /api/v1/chat | Отправить сообщение в чат |
| POST /api/v1/chat/stream | Потоковая передача чата | |
| Scenarios | GET /api/v1/scenarios | Список сценариев анализа |
| POST /api/v1/scenarios/{id}/query | Выполнить запрос сценария | |
| Query | POST /api/v1/query/execute | Выполнить пользовательский запрос |
| Review | POST /api/v1/review/patch | Проверить код патча |
| POST /api/v1/review/pr | Проверить pull request | |
| Sessions | GET /api/v1/sessions | Список сессий пользователя |
| GET /api/v1/sessions/{id} | Получить детали сессии | |
| Health | GET /api/v1/health | Проверка работоспособности системы |
Полную документацию по API можно посмотреть по адресу http://127.0.0.1:8000/api/docs после запуска сервера.
Дальнейшие шаги¶
Обязательное к прочтению¶
- Руководство по установке — Подробная настройка, включая PostgreSQL, поставщиков LLM и Joern
- Руководство по настройке — Настройка аутентификации, ограничения частоты запросов, CORS и поставщиков LLM
- Справочник API — Полная документация по API-эндпоинтам
Продвинутые темы¶
- Руководство пользователя TUI — Изучение сценариев и рабочих процессов
- Руководство по сценариям — Готовые сценарии анализа
- Устранение неполадок — Распространённые проблемы и их решения
Дополнительные интеграции¶
- Интеграция GigaChat — Российский поставщик LLM
- Импорт проекта — Импорт и анализ проектов
Пример: Полный рабочий процесс¶
Ниже приведён полный пример рабочего процесса для анализа безопасности кода:
# 1. Настройка окружения
export DATABASE_URL="postgresql+asyncpg://postgres:your_password@localhost:5432/codegraph"
# 2. Инициализация базы данных
python -m src.api.cli init-db
# 3. Создание администратора
python -m src.api.cli create-admin --username admin --password SecurePass123
# 4. Запуск сервера
python -m src.api.cli run --host 127.0.0.1 --port 8000 &
# 5. Получение токена аутентификации
TOKEN=$(curl -s -X POST http://127.0.0.1:8000/api/v1/auth/token \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"SecurePass123"}' \
| python -c "import sys, json; print(json.load(sys.stdin)['access_token'])")
# 6. Получение списка доступных сценариев
curl http://127.0.0.1:8000/api/v1/scenarios \
-H "Authorization: Bearer $TOKEN" | python -m json.tool
# 7. Выполнение сценария проверки безопасности
curl -X POST http://127.0.0.1:8000/api/v1/scenarios/security_review/query \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"query": "Найти возможные уязвимости типа SQL-инъекция",
"options": {"detailed": true}
}' | python -m json.tool
# 8. Запуск интерактивного чата
curl -X POST http://127.0.0.1:8000/api/v1/chat \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"message": "Покажи все функции, связанные с аутентификацией",
"scenario_id": "security_review"
}' | python -m json.tool
Советы для успеха¶
- Используйте Swagger UI для исследования — интерактивная документация по адресу
/api/docsпозволяет легко опробовать конечные точки - Сохраняйте токен доступа — токены действительны по умолчанию в течение 30 минут
- Проверяйте логи при ошибках — в логах сервера отображаются подробные сообщения об ошибках
- Начинайте с проверки работоспособности — всегда убеждайтесь, что
/api/v1/healthвозвращает статус «здоров» - Используйте API-ключи для автоматизации — создавайте API-ключи для скриптов и приложений
Получение помощи¶
- Ознакомьтесь с руководством по устранению неполадок
- Проверьте логи на наличие сообщений об ошибках
- Убедитесь в работоспособности подключения к базе данных через эндпоинт проверки состояния (health endpoint)
- Убедитесь, что PostgreSQL запущен и доступен
- Проверьте правильность настройки переменной DATABASE_URL
Готовы изучить тему подробнее? Ознакомьтесь с руководством по установке, где описаны все варианты настройки, и руководством по конфигурации для расширенных параметров.