[bot] AWS Bedrock Runtime: `start_async_invoke()` not instrumented
維護者通常 1 天內回覆
還沒有人認領這個 Issue。
評估
- 難度
- 3/5
- 預估耗時
- 1-2 天
- 新手友好度
- 74/100
- Issue 類型
- 功能
- 描述清晰度
- 描述清楚
- 活躍度
- 冷清
- 技術堆疊
- aws, python
- 領域
- api, observability
研究方向
從 py/src/braintrust/integrations/bedrock_runtime/patchers.py 和 tracing.py 開始,然後將其中現有的方法包裝器與 py/src/braintrust/integrations/anthropic/tracing.py 中的 Anthropic 批次實作進行比較。完成的標準是:透過現有的 Bedrock 用戶端包裝器註冊 start_async_invoke,並使用包含指定輸入、輸出、中繼資料和延遲資訊的 TASK span,同時保留對兩個 boto3 矩陣 pin 的支援。
由索引模型根據 Issue 內容生成。
描述
Summary
The AWS Bedrock Runtime start_async_invoke() API is not instrumented. Calls to client.start_async_invoke(...) produce zero Braintrust tracing. This method submits an asynchronous model invocation job — output is written to an S3 bucket — and is the Bedrock analog to batch inference APIs that are already instrumented for Anthropic (messages.batches.create()) and tracked as gaps for OpenAI (#295), Mistral (#272), and Google GenAI (#332).
The Bedrock Runtime integration was completed in #279 (closed 2026-06-16) and instruments the four synchronous execution surfaces. start_async_invoke was not included.
What is missing
| Bedrock Runtime method | Description | Instrumented? |
|---|---|---|
client.converse(...) |
Synchronous unified chat | Yes |
client.converse_stream(...) |
Streaming unified chat | Yes |
client.invoke_model(...) |
Synchronous raw model invocation | Yes |
client.invoke_model_with_response_stream(...) |
Streaming raw invocation | Yes |
client.start_async_invoke(...) |
Asynchronous model invocation job | No |
API details
- Endpoint:
POST /async-invoke - Purpose: Submit a long-running async model invocation. The caller supplies
modelId,modelInput(provider-specific JSON), andoutputDataConfig(S3 output location). The API returns aninvocationArnimmediately; output is written to S3 when complete. - Poll for results: Status checked via
client.get_async_invoke(invocationArn=...)orclient.list_async_invokes(). - Use case: Large-scale batch generation workloads where latency is not time-sensitive (similar to Anthropic's Message Batches API or OpenAI's Batch API).
Minimum instrumentation for start_async_invoke
At minimum, start_async_invoke should create a span capturing:
| Span field | Content |
|---|---|
| input | modelInput (parsed JSON body), modelId |
| output | invocationArn, submission HTTP status |
| metadata | provider: "bedrock", model (from modelId), S3 output location, clientRequestToken if set |
| metrics | Submission latency |
Span type should be SpanTypeAttribute.TASK, matching the Anthropic batch pattern.
Availability
start_async_invoke is in both boto3 matrix pins:
boto3==1.43.29(latest)boto3==1.34.116(floor)
It is in the bedrock-runtime service (not bedrock-agent-runtime), so it is reachable via the same wrap_bedrock_client(client) helper that wraps the existing four methods.
Braintrust docs status
not_found — The AWS Bedrock integration page documents tracing for converse and invoke_model. No mention of async invocation.
Upstream sources
- AWS Bedrock Runtime API reference:
StartAsyncInvoke— https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_StartAsyncInvoke.html - boto3 Bedrock Runtime client docs:
start_async_invokemethod in thebedrock-runtimeservice - The method is in the GA (non-preview) service, available in both matrix pins
Local files inspected
py/src/braintrust/integrations/bedrock_runtime/patchers.py— definesConversePatcher,ConverseStreamPatcher,InvokeModelPatcher,InvokeModelWithResponseStreamPatcher, composed intoBedrockRuntimeClientMethodsPatcher; zero references tostart_async_invokepy/src/braintrust/integrations/bedrock_runtime/tracing.py—_converse_wrapper,_converse_stream_wrapper,_invoke_model_wrapper,_invoke_model_stream_wrapperonly; no async invoke wrapperspy/src/braintrust/integrations/bedrock_runtime/integration.py— registersBedrockRuntimeClientMethodsPatcher; no async invoke registrationpy/src/braintrust/integrations/anthropic/tracing.py— Anthropicmessages.batches.create()IS instrumented as atask-type span — reference implementation for this patternpy/pyproject.toml—[tool.braintrust.matrix.boto3]pins:latest = "boto3==1.43.29","1.34.116" = "boto3==1.34.116"
Relationship to existing issues
- #279 (closed) completed the Bedrock Runtime integration for
converse,converse_stream,invoke_model,invoke_model_with_response_stream;start_async_invokewas not in scope - #295 tracks the analogous OpenAI Batch API gap (
client.batches.create()) - #272 tracks the analogous Mistral Batch Jobs API gap (
client.batch.jobs.create()) - #332 tracks the analogous Google GenAI Batch API gap (
client.batches.create())
- 主要語言
- Python
- 星號
- 22
- 分支
- 27
- 平均合併
- 11 小時 46 分鐘
- 30 天內合併 PR
- 137
環境準備
- 提供 Dockerfile 或 Docker Compose 檔案
- 沒有 Pull Request 範本
- 閱讀貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
braintrustdata/braintrust-sdk-python 的其他 Issue
-
Temporal: add `workflow.Info.original_execution_run_id` to workflow span metadata可能已有人在做 @Ehsan-hash 於 6 天前認領。 未關閉feature python
難度 2/5 1-3 小時 新手友好度 76/100
braintrustdata/braintrust-sdk-python#868 ·
維護者通常 1 天內回覆
-
python
難度 5/5 一週以上 新手友好度 20/100
braintrustdata/braintrust-sdk-python#957 ·
維護者通常 1 天內回覆
-
python
難度 5/5 一週以上 新手友好度 35/100
braintrustdata/braintrust-sdk-python#956 ·
維護者通常 1 天內回覆
-
python
braintrustdata/braintrust-sdk-python#839 ·
維護者通常 1 天內回覆
-
new-integration
難度 4/5 3-5 天 新手友好度 68/100
braintrustdata/braintrust-sdk-python#808 ·
維護者通常 1 天內回覆
查看 braintrustdata/braintrust-sdk-python 的全部 Issue
相似的 Issue
-
難度 2/5 1-3 小時 新手友好度 72/100
CLIMADA-project/climada_python#1337 ·
維護者通常 3 天內回覆
-
難度 2/5 1-3 小時 新手友好度 68/100
8go/matrix-commander#233 ·
-
documentation
難度 2/5 1-3 小時 新手友好度 66/100
-
documentation enhancement priority:high size:M
難度 2/5 1-3 小時 新手友好度 82/100
維護者通常 1 天內回覆
-
Validate non-divisible effective batch sizes in the Unsloth LoRA backend可能已有人在做 @debesh-biswas 今天認領。 未關閉
難度 2/5 1-3 小時 新手友好度 70/100