From 5eee11ac0baca46e0a901c90be1ffeafdb473f67 Mon Sep 17 00:00:00 2001 From: Linghong Date: Mon, 27 Jul 2026 03:24:47 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20live=20stream=20=E5=B7=A5?= =?UTF-8?q?=E5=85=B7=E9=AA=8C=E6=94=B6=E7=9A=84=E8=BF=90=E8=A1=8C=E5=8F=A3?= =?UTF-8?q?=E5=BE=84=E5=B9=B6=E8=A1=A5=E8=BF=9B=E8=BF=90=E7=BB=B4=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 仓库根目录没有 Cargo.toml,测试注释里的命令补上 --manifest-path server-rs/Cargo.toml 运维文档补充四个 PLATFORM_LLM_LIVE_* 变量、bash 与 PowerShell 两种执行方式,以及逐协议切换才算覆盖完整的口径 明确凭据只从进程环境变量读取,不读 .env.secrets.local,真实 API Key 不得提交进仓库 Co-Authored-By: Claude Opus 5 --- ...开发运维】本地开发验证与生产运维-2026-05-15.md | 14 ++++++++++++++ .../platform-llm/tests/live_stream_tool_calls.rs | 6 +++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/docs/【开发运维】本地开发验证与生产运维-2026-05-15.md b/docs/【开发运维】本地开发验证与生产运维-2026-05-15.md index 9447aa508..a21ae5736 100644 --- a/docs/【开发运维】本地开发验证与生产运维-2026-05-15.md +++ b/docs/【开发运维】本地开发验证与生产运维-2026-05-15.md @@ -655,6 +655,20 @@ OpenTelemetry 现阶段默认开启 OTLP traces / metrics / logs,但本地日 验收证据分为两类:`cargo test -p platform-llm` 的确定性用例验证 checked-in SSE fixture 的 parser 行为;默认忽略的 `tests/live_stream_tool_calls.rs` 只对真实端点做归一后的工具调用 smoke,检查最终工具名、id、完整参数 JSON 和文本增量字符数。该 smoke 不录制或逐事件比较原始 SSE,fixture 即使来源于真实抓包也不能据此宣称转录无偏差。 +真实端点 smoke 由四个环境变量驱动,缺任一个直接失败:`PLATFORM_LLM_LIVE_BASE_URL`、`PLATFORM_LLM_LIVE_API_KEY`、`PLATFORM_LLM_LIVE_MODEL`、`PLATFORM_LLM_LIVE_API_KIND`(取值 `anthropic` / `openai_chat` / `openai_responses`,其它值按 `openai_responses` 处理)。仓库根目录没有 `Cargo.toml`,必须显式指定 workspace manifest: + +```bash +PLATFORM_LLM_LIVE_BASE_URL=https://api.example.com/anthropic \ +PLATFORM_LLM_LIVE_API_KEY=<从密钥管理处取,勿写入仓库> \ +PLATFORM_LLM_LIVE_MODEL=<模型名> \ +PLATFORM_LLM_LIVE_API_KIND=anthropic \ +cargo test -p platform-llm --manifest-path server-rs/Cargo.toml --test live_stream_tool_calls -- --ignored --nocapture +``` + +PowerShell 下先用 `$env:PLATFORM_LLM_LIVE_API_KEY = '...'` 赋值再执行同一条 `cargo test`。切换 `PLATFORM_LLM_LIVE_API_KIND` 逐个跑三种协议,才算覆盖完整;`--nocapture` 会打印解析出的工具名、id 和参数,便于核对。 + +该用例只从进程环境变量读取凭据,不读 `.env.secrets.local`,也不会写入任何文件。真实 API Key 一律不得提交进仓库,也不要写进 `docs/`、脚本默认值或测试 fixture;临时密钥用完应在上游及时吊销。 + 创意 Agent `gpt-5` 文本链路已从 APIMart 切到 VectorEngine:`api-server` 读取 `VECTOR_ENGINE_BASE_URL` / `VECTOR_ENGINE_API_KEY` 构造 OpenAI-compatible LLM client,并自动补齐 `/v1` 前缀用于 Responses 协议。排查或切换密钥后,可在本地运行: 创意 Agent `gpt-5.4-mini` 文本链路已从 APIMart 切到 VectorEngine:`api-server` 读取 `VECTOR_ENGINE_BASE_URL` / `VECTOR_ENGINE_API_KEY` 构造 OpenAI-compatible LLM client,并自动补齐 `/v1` 前缀后请求 `/chat/completions`。通用 `/api/llm/chat/completions` 代理使用 `GENARRATIVE_LLM_PROVIDER=openai-compatible`、`GENARRATIVE_LLM_BASE_URL=https://api.vectorengine.cn/v1`、`GENARRATIVE_LLM_MODEL=gpt-5.4-mini`,未单独配置 `GENARRATIVE_LLM_API_KEY` 时可复用 `VECTOR_ENGINE_API_KEY`。排查或切换密钥后,可在本地运行: diff --git a/server-rs/crates/platform-llm/tests/live_stream_tool_calls.rs b/server-rs/crates/platform-llm/tests/live_stream_tool_calls.rs index b8a9d6dc3..6b45652b8 100644 --- a/server-rs/crates/platform-llm/tests/live_stream_tool_calls.rs +++ b/server-rs/crates/platform-llm/tests/live_stream_tool_calls.rs @@ -1,13 +1,17 @@ //! 真实端点的流式工具调用验收。默认 `#[ignore]`,只在显式指定环境变量时运行: //! +//! 仓库根目录没有 Cargo.toml,必须显式指定 workspace manifest: +//! //! ```powershell //! $env:PLATFORM_LLM_LIVE_BASE_URL = 'https://api.minimaxi.com/anthropic' //! $env:PLATFORM_LLM_LIVE_API_KEY = '...' //! $env:PLATFORM_LLM_LIVE_MODEL = 'MiniMax-M3' //! $env:PLATFORM_LLM_LIVE_API_KIND = 'anthropic' # 或 openai_chat / openai_responses -//! cargo test -p platform-llm --test live_stream_tool_calls -- --ignored --nocapture +//! cargo test -p platform-llm --manifest-path server-rs/Cargo.toml --test live_stream_tool_calls -- --ignored --nocapture //! ``` //! +//! 凭据只从进程环境变量读取,不要写进仓库内任何文件。 +//! //! 本用例是实时端点工具调用 smoke,只验证归一后的工具名、id、完整参数 JSON //! 和文本增量字符数;不录制或逐事件比对原始 SSE,也不承担固定 fixture 转录一致性证明。