99 lines
2.0 KiB
Markdown
99 lines
2.0 KiB
Markdown
# Imago Python SDK
|
|
|
|
The official Python client for interacting with the Imago backend API.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
pip install imago-client
|
|
```
|
|
|
|
For development:
|
|
```bash
|
|
cd sdk
|
|
pip install -e ".[dev]"
|
|
```
|
|
|
|
## Publishing to PyPI
|
|
|
|
```bash
|
|
cd sdk
|
|
pip install build twine
|
|
python -m build
|
|
twine check dist/*
|
|
twine upload dist/*
|
|
```
|
|
|
|
## Basic Usage
|
|
|
|
```python
|
|
import asyncio
|
|
from imago_client import HubClient
|
|
|
|
async def main():
|
|
async with HubClient("http://localhost:8000", api_key="your-api-key") as client:
|
|
# Upload an image
|
|
with open("photo.jpg", "rb") as f:
|
|
image = await client.images.upload(f.read(), "photo.jpg")
|
|
print(f"Uploaded! ID: {image.id}")
|
|
|
|
# Stream real-time pipeline events
|
|
stream = client.images.stream_pipeline(image.id, "your-api-key")
|
|
async for event in stream.stream_events():
|
|
print(f"Event: {event}")
|
|
|
|
# Get processed data
|
|
processed = await client.images.get(image.id)
|
|
if processed.ai:
|
|
print("AI Description:", processed.ai.description)
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|
|
```
|
|
|
|
## API Reference
|
|
|
|
### HubClient
|
|
|
|
```python
|
|
client = HubClient(
|
|
base_url="http://localhost:8000", # Imago API URL
|
|
api_key="your-api-key", # Imago API key
|
|
timeout=30.0, # Request timeout (seconds)
|
|
)
|
|
```
|
|
|
|
### Images Resource
|
|
|
|
```python
|
|
# Upload
|
|
image = await client.images.upload(data, filename, content_type="image/jpeg")
|
|
|
|
# Get
|
|
detail = await client.images.get(image_id)
|
|
|
|
# List
|
|
images = await client.images.list(page=1, page_size=20, tag="nature")
|
|
|
|
# Delete
|
|
await client.images.delete(image_id)
|
|
|
|
# Reprocess
|
|
await client.images.reprocess(image_id)
|
|
|
|
# WebSocket pipeline stream
|
|
stream = client.images.stream_pipeline(image_id, api_key)
|
|
async for event in stream.stream_events():
|
|
print(event)
|
|
```
|
|
|
|
### AI Resource
|
|
|
|
```python
|
|
# Summarize URL
|
|
result = await client.ai.summarize("https://example.com")
|
|
|
|
# Draft task
|
|
task = await client.ai.draft_task("Organiser les photos de vacances")
|
|
```
|