sdk/python/README_CN.md
OpenViking 的轻量级 Python HTTP SDK。
openviking-sdk 面向只需要通过 HTTP 调用现有 OpenViking 服务的用户。它避免了主包 openviking 中较重的本地运行时、服务端和 CLI 依赖。
pip install openviking-sdk
要求:
http://127.0.0.1:1933openviking-sdkopenviking_sdkfrom openviking_sdk import AsyncHTTPClient, SyncHTTPClient
SDK 支持三种配置方式,优先级从高到低如下:
OPENVIKING_URL、OPENVIKING_API_KEY、OPENVIKING_ACCOUNT、OPENVIKING_USER、OPENVIKING_ACTOR_PEER_ID 和 OPENVIKING_TIMEOUTovcli.conf,来源可以是 OPENVIKING_CLI_CONFIG_FILE 指定的路径,或者默认路径 ~/.openviking/ovcli.conf这意味着之前依赖 ovcli.conf 的配置方式,在 SDK 拆分之后仍然可以继续使用。
大多数部署场景使用 API Key 认证。
常见客户端字段:
url:OpenViking 服务的基础 URLapi_key:root key 或 user keyaccount:可选的 account 覆盖,通常只在使用 root key 时需要user:可选的 user 覆盖,通常只在使用 root key 时需要user_id:user 的兼容旧别名actor_peer_id:可选的 actor peer 覆盖agent_id:actor_peer_id 的兼容旧别名兼容性说明:
user_id 和 agent_idactor_peer_id 和 agent_id 不能同时传入示例:
from openviking_sdk import SyncHTTPClient
client = SyncHTTPClient(
url="http://127.0.0.1:1933",
api_key="your-user-or-root-key",
)
如果你使用的是 root key,并且希望以某个租户用户身份执行:
from openviking_sdk import SyncHTTPClient
client = SyncHTTPClient(
url="http://127.0.0.1:1933",
api_key="your-root-key",
account="demo-account",
user="demo-user",
)
from openviking_sdk import SyncHTTPClient
client = SyncHTTPClient(
url="http://127.0.0.1:1933",
api_key="your-user-key",
)
healthy = client.health()
print("health:", healthy)
session = client.create_session("demo-session")
print("session:", session)
client.session("demo-session").add_message("user", "hello from sdk")
context = client.session("demo-session").get_session_context(token_budget=4096)
print("context:", context)
import asyncio
from openviking_sdk import AsyncHTTPClient
async def main() -> None:
client = AsyncHTTPClient(
url="http://127.0.0.1:1933",
api_key="your-user-key",
)
healthy = await client.health()
print("health:", healthy)
session = await client.create_session("demo-session-async")
print("session:", session)
session_client = client.session("demo-session-async")
await session_client.add_message("user", "hello from async sdk")
context = await session_client.get_session_context(token_budget=4096)
print("context:", context)
await client.close()
asyncio.run(main())
from openviking_sdk import SyncHTTPClient
client = SyncHTTPClient(url="http://127.0.0.1:1933", api_key="your-user-key")
result = client.create_session("demo-session")
print(result)
add_resource 会自动处理本地路径对应的文件上传。
from openviking_sdk import SyncHTTPClient
client = SyncHTTPClient(url="http://127.0.0.1:1933", api_key="your-user-key")
result = client.add_resource(
"/path/to/notes.md",
to="viking://resources/demo-notes",
reason="knowledge import",
wait=True,
)
print(result)
from openviking_sdk import SyncHTTPClient
client = SyncHTTPClient(url="http://127.0.0.1:1933", api_key="your-user-key")
client.mkdir("viking://resources/demo-dir")
print(client.ls("viking://resources"))
print(client.read("viking://resources/demo-dir/example.md"))
from openviking_sdk import SyncHTTPClient
client = SyncHTTPClient(url="http://127.0.0.1:1933", api_key="your-user-key")
result = client.find("hello", limit=5)
print(result)
如果你使用 root key 连接,SDK 也暴露了管理员 API,例如:
admin_create_accountadmin_register_useradmin_list_accountsadmin_list_usersadmin_regenerate_keyadmin_delete_account示例:
from openviking_sdk import SyncHTTPClient
root_client = SyncHTTPClient(
url="http://127.0.0.1:1933",
api_key="your-root-key",
)
result = root_client.admin_create_account(
account_id="demo-account",
admin_user_id="demo-admin",
)
print(result)
SDK 会把服务端错误码映射为 Python 异常。
from openviking_sdk import OpenVikingError, SyncHTTPClient
client = SyncHTTPClient(url="http://127.0.0.1:1933", api_key="your-user-key")
try:
print(client.read("viking://resources/not-exists.md"))
except OpenVikingError as exc:
print(type(exc).__name__, exc)
openviking 的关系在以下场景中使用 openviking-sdk:
在以下场景中使用 openviking:
从源码安装:
cd sdk/python
pip install -e .
构建发行包:
cd sdk/python
python -m build
SDK 版本号来自以下格式的 git tag:
这个 tag 命名空间独立于主包的发布 tag,例如:
v0.3.26
仓库已经配置为支持通过 SDK 专用 tag 触发 SDK 发布。
典型流程:
[email protected] 的 tagsdk/pythonopenviking-sdk 发布到 PyPI