17 - Python SDK (lmstudio-python)
Начало работы с Python SDK от LM Studio
lmstudio-python предоставляет набор API для взаимодействия с LLM, моделями эмбеддингов и агентскими потоками.
Установка SDK
lmstudio-python доступен как пакет PyPI. Вы можете установить его с помощью pip.
pip install lmstudio
Исходный код и вклад в открытый исходный код доступны на GitHub: lmstudio-python.
Возможности
- Использование LLM для ответов в чатах или предсказания завершения текста
- Определение функций как инструментов и превращение LLM в автономных агентов, работающих полностью локально
- Загрузка, настройка и выгрузка моделей из памяти
- Генерация эмбеддингов для текста и многое другое!
Быстрый пример: Чат с моделью Llama
Python (API удобства):
import lmstudio as lms
model = lms.llm("qwen/qwen3-4b-2507")
result = model.respond("What is the meaning of life?")
print(result)
Получение локальных моделей
Приведённый выше код требует модель qwen3-4b-2507. Если у вас нет этой модели, выполните следующую команду в терминале для её загрузки:
lms get qwen/qwen3-4b-2507
Подробнее о lms get в CLI от LM Studio читайте здесь.
Удобство интерактивной работы, детерминированное управление ресурсами или структурированная конкурентность?
Как показано в примере выше, существует три различных подхода для работы с Python SDK от LM Studio.
Первый — это API удобства для интерактивной работы (в примерах указан как "Python (convenience API)"), который фокусируется на использовании экземпляра клиента LM Studio по умолчанию для удобного взаимодействия в синхронном приглашении Python или при использовании блокнотов Jupyter.
Второй — это синхронный API управления ресурсами с областью действия (в примерах указан как "Python (scoped resource API)"), который использует менеджеры контекста для обеспечения детерминированного освобождения выделенных ресурсов (таких как сетевые соединения), а не их потенциального оставления открытыми до завершения всего процесса.
Последний — это асинхронный API структурированной конкурентности (в примерах указан как "Python (asynchronous API)"), который предназначен для использования в асинхронных программах, следующих принципам дизайна "структурированной конкурентности", чтобы обеспечить правильное управление фоновыми задачами, обрабатывающими соединения SDK с хостом сервера API. Асинхронные приложения, которые не соблюдают эти принципы дизайна, должны будут полагаться на потоковый доступ к синхронному API управления ресурсами с областью действия, а не пытаться использовать собственный асинхронный API SDK. Python SDK версии 1.5.0 — первая версия с полной поддержкой асинхронного API.
Некоторые примеры являются общими для API удобства для интерактивной работы и синхронного API управления ресурсами с областью действия. Эти примеры указаны как "Python (synchronous API)".
Таймауты в синхронном API
Требуется версия Python SDK: 1.5.0
Начиная с версии Python SDK 1.5.0, синхронный API по умолчанию истекает через 60 секунд без активности при ожидании ответа или уведомления о событии потоковой передачи от сервера API.
Количество секунд ожидания ответов и уведомлений о событиях можно настроить с помощью функции lmstudio.set_sync_api_timeout(). Установка таймаута в None полностью отключает таймаут (восстанавливая поведение предыдущих версий SDK).
Текущий таймаут синхронного API можно запросить с помощью функции lmstudio.get_sync_api_timeout().
Таймауты в асинхронном API
Требуется версия Python SDK: 1.5.0
Поскольку асинхронные корутины поддерживают отмену, в асинхронном API не реализована специальная поддержка таймаутов. Вместо этого следует использовать механизмы асинхронного таймаута общего назначения, такие как asyncio.wait_for() или anyio.move_on_after().
Дополнительные ресурсы
Используйте lmstudio-js в приложениях Node.js или TypeScript для локальных рабочих процессов с моделями
Используйте lms для чата, загрузки моделей, управления демоном, контроля сервера и публикации