Metadata-Version: 2.1
Name: omai
Version: 1.0.0
Summary: Python SDK for Omai VLX API
Home-page: UNKNOWN
Author: Omai
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Requires-Python: >=3.8
Description-Content-Type: text/markdown

# omai-client Python SDK

这是 Omai VLX Python SDK，当前覆盖 VLX 相关接口：

- `vlx_seek`：VLX-Seek 多模态同步调用
- `vlx_flow_stream`：创建 VLX 流式任务并消费原始 SSE 事件
- `vlx_flow_stream_message`：创建 VLX 流式任务并消费业务消息
- `vlx_flow_stream_raw`：返回原始流式响应
- `vlx_flow_stop`：停止 VLX 流式任务
- `vlx_flow_update_config`：更新 VLX 流式任务配置

## 安装 tar.gz

```bash
pip install ./dist/omai-1.0.0.tar.gz
```

## 单文件验证

如果只是临时验证，可以直接把 `dist_single/vlx_api_client.py` 放到业务项目里：

```python
from vlx_api_client import VlxApiClient, VlxSeekRequest, VlxSeekMessage, VlxSeekContent
```

单文件版和包版本共用同一份核心代码。真实 HTTP 请求依赖 `requests`：

```bash
pip install requests
```

## 环境变量配置

Python SDK 推荐使用环境变量：

```bash
export VLX_API_ENABLED=true
export VLX_API_ENDPOINT=http://linker-gateway-service:31003/
export VLX_API_KEY=aaas_xxx
export VLX_API_CONNECT_TIMEOUT_MS=60000
export VLX_API_READ_TIMEOUT_MS=60000
export VLX_API_WRITE_TIMEOUT_MS=60000
export VLX_API_STREAM_READ_TIMEOUT_MS=0
export VLX_API_CLIENT_NUM=2048
```

`VLX_API_STREAM_READ_TIMEOUT_MS=0` 表示流式接口不启用读超时，适合 12/24 小时 SSE 长连接。

## VLX-Seek 示例

```python
from omai_client import (
    VlxApiClient,
    VlxSeekContent,
    VlxSeekImageUrl,
    VlxSeekMessage,
    VlxSeekRequest,
)

client = VlxApiClient.from_env()

request = VlxSeekRequest(
    model="VLX-Seek",
    messages=[
        VlxSeekMessage(
            role="user",
            content=[
                VlxSeekContent(type="text", text="请描述图片内容"),
                VlxSeekContent(
                    type="image_url",
                    image_url=VlxSeekImageUrl(url="https://example.com/a.jpg"),
                ),
            ],
        )
    ],
    max_tokens=512,
    temperature=0.2,
)

response = client.vlx_seek(request)
print(response.choices[0].message.content)
```

## 流式消息示例

```python
from omai_client import VlxApiClient, VlxFlowSource, VlxFlowStreamRequest


class Handler:
    def on_event(self, message):
        print(message.event, message.content)

    def on_error(self, throwable):
        print("error:", throwable)

    def on_closed(self):
        print("closed")


client = VlxApiClient.from_env()
call = client.vlx_flow_stream_message(
    VlxFlowStreamRequest(
        source=VlxFlowSource(path="rtsp://camera", type=1),
        prompt="识别画面中的异常情况",
        frame_preempt="qa",
        model="VLX-Stream",
    ),
    Handler(),
)

# 需要停止本地 SSE 长连接时调用。
# call.cancel()
```


