ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Opik Python SDK 中的 RedirectClient 使用指南:为 SDK 生成链接创建平台内重定向

Opik Python SDK 中的 RedirectClient 使用指南:为 SDK 生成链接创建平台内重定向 Opik Python SDK 中的 RedirectClient 使用指南为 SDK 生成链接创建平台内重定向【免费下载链接】comet-llmDebug, evaluate, and monitor your LLM applications, RAG systems, and agentic workflows with comprehensive tracing, automated evaluations, and production-ready dashboards.项目地址: https://gitcode.com/GitHub_Trending/co/comet-llmOpik 的 Python SDK 通过rest_client.redirect即RedirectClient提供了一组用于生成平台内 URL 重定向的接口其作用是让 SDK 生成的 trace、dataset、experiment、optimization 链接能够携带鉴权上下文并跳转到 Opik 前端对应的详情页面。本文基于 redirect.rst 文档并结合 SDK 与后端源码完整讲解 RedirectClient 的四个方法、参数语义、Base64URL 编码机制以及后端的 303 重定向实现。RedirectClient 是什么根据文档定义Redirect Client 为 Opik 平台提供处理 URL 重定向的方法The Redirect client provides methods for handling URL redirects in the Opik platform。它的典型应用场景是当你在命令行、Notebook 或 CI 脚本中通过 SDK 创建了 trace、dataset、experiment 或优化任务后SDK 无法直接把未经验证的深链交给用户通过 RedirectClient 请求后端后端会校验资源归属、解析出正确的工作区与资源 ID再返回一个可直达前端页面的 303 重定向。在 SDK 代码中RedirectClient定义于 sdks/python/src/opik/rest_api/redirect/client.py并由聚合客户端OpikApi在 sdks/python/src/opik/rest_api/client.py 中挂载为self.redirect属性。日常使用时通过opik.Opik()客户端暴露的rest_client属性即可访问见 sdks/python/src/opik/api_objects/opik_client.py 中rest_client属性返回OpikApi实例的实现。快速上手最小可用示例文档给出的示例展示了从opik.Opik()客户端进入 Redirect 模块的基本形态import opik client opik.Opik() # 处理重定向操作 result client.rest_client.redirect.datasets_redirect( dataset_iddataset_id, pathcGF0aA, )需要特别说明该文档页面的示例代码仅为示意性写法实际可调用的方法名以源码为准。RedirectClient真实提供四个方法且path参数要求传入 Base64 URL 编码后的字符串详见下文path 参数的编码机制方法调用成功后返回None重定向动作由后端以 303 响应完成。四个核心方法及其参数RedirectClient同步与AsyncRedirectClient异步各提供四个方法方法名与后端 REST 端点一一对应端点定义见 sdks/python/src/opik/rest_api/redirect/raw_client.py方法必需参数后端端点目标前端页面datasets_redirectdataset_id、pathGET /v1/session/redirect/datasets数据集 items 页experiments_redirectdataset_id、experiment_id、pathGET /v1/session/redirect/experiments实验对比页optimizations_redirectdataset_id、optimization_id、pathGET /v1/session/redirect/optimizations优化对比页projects_redirecttrace_id、pathGET /v1/session/redirect/projects项目 trace 详情页所有方法均支持两个可选参数workspace_name: Optional[str]目标工作区名称。传参会跳过后端按资源 ID 反查工作区的步骤不传时后端会依据资源所属的 workspace 自动解析。request_options: Optional[RequestOptions]请求级配置可用于设置超时、附加头信息等。各方法调用示例数据集重定向from Opik import OpikApi client OpikApi(api_keyYOUR_API_KEY, workspace_nameYOUR_WORKSPACE_NAME) client.redirect.datasets_redirect( dataset_id8f2e4a5b-0000-0000-0000-000000000001, pathaXRlbXM, )实验对比重定向需要同时提供数据集 ID 与实验 IDclient.redirect.experiments_redirect( dataset_id8f2e4a5b-0000-0000-0000-000000000001, experiment_id8f2e4a5b-0000-0000-0000-000000000002, pathY29tcGFyZQ, )优化任务对比重定向client.redirect.optimizations_redirect( dataset_id8f2e4a5b-0000-0000-0000-000000000001, optimization_id8f2e4a5b-0000-0000-0000-000000000003, pathY29tcGFyZQ, )项目 trace 重定向以 trace_id 定位项目client.redirect.projects_redirect( trace_id8f2e4a5b-0000-0000-0000-000000000004, pathdHJhY2Vz, )异步客户端 AsyncRedirectClient当你的应用基于asyncio时可使用AsyncRedirectClient四个方法的签名与同步版完全一致只是调用时需要await。参考 client.py 中生成的 docstring 示例import asyncio from Opik import AsyncOpikApi client AsyncOpikApi(api_keyYOUR_API_KEY, workspace_nameYOUR_WORKSPACE_NAME) async def main() - None: await client.redirect.datasets_redirect( dataset_id8f2e4a5b-0000-0000-0000-000000000001, pathaXRlbXM, ) asyncio.run(main())同步与异步客户端都通过with_raw_response属性暴露底层RawRedirectClient/AsyncRawRedirectClient后者返回完整的HttpResponse[None]对象便于需要访问原始响应头或状态码的进阶场景。文档中的:exclude-members: with_raw_response指令正是为了在 API 文档中隐藏这一进阶属性保持页面聚焦于常规用法。path 参数的编码机制path并非任意的前端路由字符串而是需要经过Base64 URL 编码RFC 4648 的 URL-safe 变体即使用-与_而非与/且不带 padding后的值。这一点可以从后端实现得到确认在 apps/opik-backend/src/main/java/com/comet/opik/api/resources/v1/session/RedirectResource.java 中四个端点收到path参数后统一执行new String(Base64.getUrlDecoder().decode(path), StandardCharsets.UTF_8)即在服务端用Base64.getUrlDecoder()解码后再拼接前端 URL。因此SDK 侧在发起请求前应先将想要跳转的前端路径如items、compare、traces做 URL-safe Base64 编码再作为path传入。例如 Python 中import base64 path base64.urlsafe_b64encode(bitems).rstrip(b).decode() # path aXRlbXM后端随后通过 303 See Other 状态码Response.seeOther(...)将请求重定向到真实前端地址。后端如何组装重定向 URL重定向 URL 的组装逻辑位于 apps/opik-backend/src/main/java/com/comet/opik/domain/RedirectService.java 的RedirectServiceImpl其内部定义了四条前端 URL 模板private static final String TRACE_REDIRECT_URL %s/%s/projects/%s/traces?tablogslogsTypetracestrace%s; private static final String DATASET_REDIRECT_URL %s/%s/datasets/%s/items; private static final String EXPERIMENT_REDIRECT_URL %s/%s/experiments/%s/compare?experiments%s; private static final String OPTIMIZATION_REDIRECT_URL %s/%s/optimizations/%s/compare?optimizations%s;组装过程的关键步骤解析工作区若请求未携带workspace_nameprojectsRedirect通过traceService.getTraceDetailsById(traceId)拿到 trace 的 workspaceId 与 projectId再由workspaceNameService.getWorkspaceName(...)反查工作区名数据集类端点则通过datasetService.findWorkspaceIdByDatasetId(datasetId)完成同样的反查。解析前端地址feBaseUrl(opikBEBaseUrl)会从后端地址中截取/api之前的部分作为前端基地址若地址不含/api会抛出RuntimeException。拼接资源 IDexperiments与optimizations的 ID 会被包装成 JSON 数组形式[id]并用URLEncoder.encode转义后放入查询参数以适配前端对比页的多选参数格式。错误处理与请求细节从 raw_client.py 可以看到四个请求均通过httpx客户端以GET方式发出workspace_name以查询参数随请求传递。响应处理遵循以下规则2xx 状态码返回HttpResponse[None]业务上重定向已由服务端完成400抛出BadRequestError如dataset_id等参数缺失或格式非法404抛出NotFoundError如对应 trace、dataset 资源不存在其他状态码或响应体无法解析为 JSON抛出ApiError携带原始状态码、响应头与响应文本。因此调用方应当对这三类异常做捕获处理特别是在资源 ID 由用户输入或历史数据提供时from Opik.core.api_error import ApiError from Opik.errors import NotFoundError, BadRequestError try: client.redirect.projects_redirect( trace_id8f2e4a5b-0000-0000-0000-000000000004, pathbase64.urlsafe_b64encode(btraces).rstrip(b).decode(), ) except BadRequestError: print(参数不合法) except NotFoundError: print(trace 不存在) except ApiError as e: print(f请求失败: {e.status_code})典型使用场景CI 报告输出在自动化评估流水线结束后用experiments_redirect生成实验对比页链接写入测试报告或 IM 通知CLI 工具深链命令行工具创建数据集后用datasets_redirect输出直达数据集 items 页的链接用户点击即可进入前端继续标注或浏览优化任务跟进运行 Prompt 优化后用optimizations_redirect将优化对比结果页分享给团队调试追溯用projects_redirect把某条 trace 的具体详情页含日志标签页直接发给协作者。参考源码路径SDK 文档页面apps/opik-documentation/python-sdk-docs/source/rest_api/clients/redirect.rst客户端实现同步/异步sdks/python/src/opik/rest_api/redirect/client.py底层 HTTP 实现 sdks/python/src/opik/rest_api/redirect/raw_client.py聚合 REST 客户端挂载 sdks/python/src/opik/rest_api/client.py后端 REST 端点apps/opik-backend/src/main/java/com/comet/opik/api/resources/v1/session/RedirectResource.java后端 URL 组装服务apps/opik-backend/src/main/java/com/comet/opik/domain/RedirectService.java【免费下载链接】comet-llmDebug, evaluate, and monitor your LLM applications, RAG systems, and agentic workflows with comprehensive tracing, automated evaluations, and production-ready dashboards.项目地址: https://gitcode.com/GitHub_Trending/co/comet-llm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表