[BOT ISSUE] LangChain4j instrumentation only supports OpenAI-backed chat models
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 48/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
- Lĩnh vực
- observability
Hướng nghiên cứu
Bắt đầu với BraintrustLangchain.java, đặc biệt là các kiểm tra model và phần wrapping dành riêng cho OpenAI, sau đó đọc LangchainInstrumentationModule.java và WrappedHttpClient.java. Theo dõi cách advice hiện có của OpenAI builder và HTTP client wrapper hoạt động. Hoàn thành có nghĩa là các provider LangChain4j không phải OpenAI được liệt kê nhận được instrumentation tương đương ở cấp LLM trong cả đường dẫn wrapping và auto-instrumentation.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
The LangChain4j instrumentation only wraps OpenAiChatModel and OpenAiStreamingChatModel. All other LangChain4j model providers — including Anthropic, Google Gemini, Azure OpenAI, and Mistral — are explicitly skipped with a warning, producing no LLM-level span data for those calls.
Unlike the Spring AI integration (where unsupported providers can fall through to direct SDK auto-instrumentation, e.g. the GenAI module intercepts Client$Builder.build()), LangChain4j model providers use their own internal HTTP clients rather than the upstream SDK clients. This means no other auto-instrumentation module catches these calls.
What is missing
BraintrustLangchain.wrap(OpenTelemetry, AiServices) (lines 36-51) performs instanceof checks against only two model classes:
if (chatModel instanceof OpenAiChatModel oaiModel) {
aiServices.chatModel(wrap(openTelemetry, oaiModel));
} else {
log.warn("unsupported model: {}. LLM calls will not be instrumented",
chatModel.getClass().getName());
}
The auto-instrumentation module (LangchainInstrumentationModule) similarly only registers ByteBuddy advice for OpenAiChatModel$OpenAiChatModelBuilder.build() and OpenAiStreamingChatModel$OpenAiStreamingChatModelBuilder.build().
The most impactful missing model providers are:
| LangChain4j model class | Provider |
|---|---|
AnthropicChatModel |
Anthropic Claude |
GoogleAiGeminiChatModel / GoogleAiGeminiStreamingChatModel |
Google Gemini |
VertexAiGeminiChatModel / VertexAiGeminiStreamingChatModel |
Google Vertex AI |
AzureOpenAiChatModel / AzureOpenAiStreamingChatModel |
Azure OpenAI |
MistralAiChatModel / MistralAiStreamingChatModel |
Mistral AI |
Since the existing OpenAI instrumentation works by wrapping LangChain4j's internal HttpClient interface (extracted via reflection from the model's internal client), the same pattern could apply to other providers — each uses the same dev.langchain4j.http.client.HttpClient interface internally.
Braintrust docs status
Braintrust docs do not have a LangChain4j-specific page. The Java SDK is listed as supported for OpenAI, Anthropic, and Gemini providers at https://www.braintrust.dev/docs/integrations/ai-providers, but LangChain4j as a framework integration is not_found in docs.
Upstream sources
- LangChain4j supports 20+ model providers as first-party integrations: https://github.com/langchain4j/langchain4j
- LangChain4j model provider modules:
langchain4j-anthropic,langchain4j-google-ai-gemini,langchain4j-vertex-ai-gemini,langchain4j-azure-open-ai,langchain4j-mistral-ai, etc. - All LangChain4j model providers use their own
dev.langchain4j.http.client.HttpClientinternally (not the upstream provider SDK), so upstream SDK auto-instrumentation does not cover them.
Local files inspected
braintrust-sdk/instrumentation/langchain_1_8_0/src/main/java/dev/braintrust/instrumentation/langchain/v1_8_0/BraintrustLangchain.java— lines 36-51 (instanceofcheck limits to OpenAI only), lines 88-152 (OpenAI-specific wrapping via internal HttpClient)braintrust-sdk/instrumentation/langchain_1_8_0/src/main/java/dev/braintrust/instrumentation/langchain/v1_8_0/auto/LangchainInstrumentationModule.java— lines 55-68, 85-100 (auto-instrumentation only targets OpenAI builders)braintrust-sdk/instrumentation/langchain_1_8_0/src/main/java/dev/braintrust/instrumentation/langchain/v1_8_0/WrappedHttpClient.java— the HTTP client wrapper that could be reused for other providers
- 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
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của braintrustdata/braintrust-sdk-java
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Tất cả issue của braintrustdata/braintrust-sdk-java
Issue tương tự
-
certification
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 80/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
[BUG] ECR GetAuthorizationToken returns a proxyEndpoint for the default region, not the request's Đang mởbug ecr
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Needs: Triage Type: Feature request
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
AntennaPod/AntennaPod#8794 ·
-
agentic-workflows
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
github/copilot-sdk#2760 ·