Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[BOT ISSUE] Spring AI instrumentation limited to OpenAI and Anthropic chat models; no embedding model support

Đang mở
#71 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
38/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
java, spring
Lĩnh vực
ai, backend, observability

Hướng nghiên cứu

Bắt đầu với BraintrustSpringAI.java và BraintrustObservationHandler.java, sau đó xem xét hai mô-đun auto-instrumentation và BraintrustSpringAITest.java. Xác định cách các provider Spring AI được liệt kê và EmbeddingModelObservationContext cần được hỗ trợ; được coi là hoàn thành khi các lệnh gọi chat và embedding được hỗ trợ tạo ra các span ожидаed, với các bài kiểm thử bao quát hành vi được thêm vào.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Summary

The Spring AI instrumentation module (springai_1_0_0) only wraps OpenAiChatModel.Builder and AnthropicChatModel.Builder. All other Spring AI chat model providers — including Google Vertex AI Gemini, Mistral, AWS Bedrock, and Azure OpenAI — are silently passed through with no instrumentation. Additionally, Spring AI's EmbeddingModel interface is not instrumented for any provider.

Unlike the analogous LangChain4j gap (#60), unsupported Spring AI providers generally cannot fall through to this repo's direct SDK auto-instrumentation modules. Spring AI providers use their own HTTP transport layers (Spring RestClient, Google Cloud libraries, Azure SDK, AWS SDK) rather than the upstream provider SDKs that the auto-instrumentation modules target (com.openai:openai-java, com.anthropic:anthropic-java, com.google.genai).

What is missing

1. Chat model providers beyond OpenAI and Anthropic

BraintrustSpringAI.wrap() (lines 17–39) checks the builder class name against two hardcoded strings:

private static final String OPENAI_BUILDER_CLASS =
        "org.springframework.ai.openai.OpenAiChatModel$Builder";
private static final String ANTHROPIC_BUILDER_CLASS =
        "org.springframework.ai.anthropic.AnthropicChatModel$Builder";

Unrecognized builders are returned unmodified with a log.info() message. No BraintrustObservationHandler is registered, so no spans are created.

The most impactful missing providers:

Spring AI module Provider Auto-instrumentation fallback?
spring-ai-vertex-ai-gemini Google Vertex AI Gemini No — uses google-cloud-vertexai, not com.google.genai
spring-ai-azure-openai Azure OpenAI No — uses com.azure:azure-ai-openai, not com.openai:openai-java
spring-ai-bedrock AWS Bedrock No — uses software.amazon.awssdk:bedrockruntime
spring-ai-mistral-ai Mistral AI No — uses Spring RestClient directly

The auto-instrumentation modules (SpringAIOpenAIInstrumentationModule, SpringAIAnthropicInstrumentationModule) similarly only register ByteBuddy advice for the two known builder classes.

2. Embedding model instrumentation

BraintrustObservationHandler implements ObservationHandler<ChatModelObservationContext> only. Spring AI also fires observations for embedding calls via EmbeddingModelObservationContext, but no handler is registered for these. This means all Spring AI embedding calls — including OpenAI and Anthropic embeddings through Spring AI — produce no Braintrust spans.

Spring AI's EmbeddingModel interface is implemented by OpenAiEmbeddingModel, VertexAiEmbeddingModel, BedrockEmbeddingModel, and others.

Braintrust docs status

Upstream sources

Local files inspected

  • braintrust-sdk/instrumentation/springai_1_0_0/src/main/java/dev/braintrust/instrumentation/springai/v1_0_0/BraintrustSpringAI.java — lines 17–39 (hardcoded builder class checks; unrecognized builders passed through)
  • braintrust-sdk/instrumentation/springai_1_0_0/src/main/java/dev/braintrust/instrumentation/springai/v1_0_0/BraintrustObservationHandler.java — implements ObservationHandler<ChatModelObservationContext> only; no EmbeddingModelObservationContext handler
  • braintrust-sdk/instrumentation/springai_1_0_0/src/main/java/dev/braintrust/instrumentation/springai/v1_0_0/OpenAIBuilderWrapper.java — OpenAI-specific tagging
  • braintrust-sdk/instrumentation/springai_1_0_0/src/main/java/dev/braintrust/instrumentation/springai/v1_0_0/AnthropicBuilderWrapper.java — Anthropic-specific tagging
  • braintrust-sdk/instrumentation/springai_1_0_0/src/main/java/dev/braintrust/instrumentation/springai/v1_0_0/auto/SpringAIOpenAIInstrumentationModule.java — only targets OpenAiChatModel$Builder.build()
  • braintrust-sdk/instrumentation/springai_1_0_0/src/main/java/dev/braintrust/instrumentation/springai/v1_0_0/auto/SpringAIAnthropicInstrumentationModule.java — only targets AnthropicChatModel$Builder.build()
  • braintrust-sdk/instrumentation/springai_1_0_0/src/test/java/dev/braintrust/instrumentation/springai/v1_0_0/BraintrustSpringAITest.java — parameterized tests only cover OpenAI and Anthropic; no embedding tests exist
Ngôn ngữ chính
Java
Star
21
Fork
5
Merge trung bình
2 ngày 7 giờ
Pull request đã merge (30 ngày)
8

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của braintrustdata/braintrust-sdk-java

Tất cả issue của braintrustdata/braintrust-sdk-java

Issue tương tự

Thêm issue về Java

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.