更新时间:2026-05-06 gmt 08:00
sdk应用框架-j9九游会登录
框架概述
sdk应用框架基于starlette web框架实现,采用装饰器模式将用户函数封装为http端点。这种设计使得开发者无需关心底层网络通信,只需专注于业务逻辑的实现。
核心入口类: agentartsruntimeapp
agentartsruntimeapp是sdk的核心类,继承自starlette框架,提供ai代理部署所需的所有web服务功能。
文件位置:src/agentarts/sdk/runtime/app.py
基本用法:
from agentarts.sdk import agentartsruntimeapp, requestcontext
app = agentartsruntimeapp()
@app.entrypoint
async def handler(payload: dict, context: requestcontext = none) -> dict:
"""agent 入口函数"""
message = payload.get("message", "")
return {"response": f"received: {message}"}
if __name__ == "__main__":
app.run() 装饰器详解
@app.entrypoint - 主入口装饰器
用于注册主处理函数,处理所有到达/invocations端点的请求。
@app.entrypoint
def handle_request(payload, context):
"""
处理agent调用请求
args:
payload: 请求载荷,包含用户输入
context: 请求上下文,包含用户id、会话id等信息
returns:
响应数据,可以是普通对象、生成器或异步生成器
"""
prompt = payload.get("prompt")
# 处理逻辑
return {"response": f"处理: {prompt}"} 支持的返回类型:
- 普通对象:自动序列化为json响应
- 同步生成器:支持流式响应(sse)
- 异步生成器:支持异步流式响应
@app.ping - 健康检查装饰器
用于注册自定义的健康检查处理器。
@app.ping
def custom_ping():
"""返回自定义的ping状态"""
return "healthy" # 或返回 pingstatus.healthy pingstatus枚举值:
- healthy:健康状态
- healthy_busy:忙碌状态
- unhealthy:不健康状态
@app.websocket - websocket装饰器
用于注册websocket处理函数,支持双向实时通信。
@app.websocket
async def handle_websocket(websocket, context):
"""处理websocket连接"""
await websocket.accept()
while true:
try:
data = await websocket.receive_text()
# 处理消息
await websocket.send_text(f"echo: {data}")
except exception:
break @app.async_task - 异步任务装饰器
用于注册异步任务,sdk会自动追踪任务健康状态。
@app.async_task
async def background_task():
"""后台异步任务"""
# 任务执行期间,ping状态会自动设置为healthy_busy
# 任务完成后,自动恢复为healthy
await asyncio.sleep(10) 请求上下文
sdk提供两种上下文对象用于获取请求信息:
agentartsruntimecontext
基于contextvars的线程安全运行时上下文,用于在请求处理过程中存储和获取上下文信息。
from agentarts.sdk.runtime.context import agentartsruntimecontext
# 设置上下文
agentartsruntimecontext.set_user_id("user123")
agentartsruntimecontext.set_session_id("session456")
agentartsruntimecontext.set_workload_access_token("token789")
# 获取上下文
user_id = agentartsruntimecontext.get_user_id()
session_id = agentartsruntimecontext.get_session_id()
token = agentartsruntimecontext.get_workload_access_token() requestcontext
请求级别的上下文对象,包含请求的详细信息。
@app.entrypoint
def handle_request(payload, context: requestcontext):
"""
context包含以下属性:
- user_id: 用户id
- session_id: 会话id
- request_id: 请求id
- workload_access_token: 工作负载访问令牌
"""
print(f"user: {context.user_id}")
print(f"session: {context.session_id}")
return {"status": "ok"} 框架请求处理流程
http请求
│
▼
starlette router
│
├─ post /invocations ──▶ _handle_invocation()
│ │
│ ├─ 解析json payload
│ ├─ 构建requestcontext
│ ├─ 调用用户handler
│ ├─ 处理响应类型:
│ │ ├─ streamingresponse (sse)
│ │ ├─ jsonresponse
│ │ └─ 普通response
│ └─ 返回响应
│
├─ get /ping ──▶ _handle_ping()
│ │
│ └─ 返回pingstatus
│
└─ websocket /ws ──▶ _handle_websocket()
│
└─ 传递给websocket handler 父主题:
相关文档
意见反馈
文档内容是否对您有帮助?
提交成功!非常感谢您的反馈,我们会继续努力做到更好! 您可在查看反馈及问题处理状态。
系统繁忙,请稍后重试
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨