[BOT ISSUE] LangChain4j EmbeddingModel calls are not instrumented
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 55/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- java
- Ambito
- devtools, observability
Direzione di ricerca
Inizia leggendo BraintrustLangchain.java e LangchainInstrumentationModule.java, concentrandoti sui wrapper esistenti per i modelli di chat e sui builder advice. Esamina WrappedHttpClient e BraintrustLangchainTest.java prima di determinare come debbano essere coperti i modelli di embedding e i builder. Il lavoro è completo quando le chiamate di embedding supportate da LangChain4j producono span Braintrust con acquisizione di input/output e metriche di utilizzo, e i test coprono la nuova strumentazione.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
The LangChain4j instrumentation wraps OpenAiChatModel, OpenAiStreamingChatModel, and AiServices, but does not instrument any EmbeddingModel implementation. Calls to embeddingModel.embed() or embeddingModel.embedAll() through LangChain4j produce no Braintrust spans, no input/output capture, and no usage metrics.
This is distinct from #60 (which covers missing non-OpenAI chat model providers) and from #71 (which covers Spring AI embedding gaps). LangChain4j's EmbeddingModel is a separate interface from ChatLanguageModel with its own implementations, builders, and HTTP transport.
What is missing
No wrapper methods for EmbeddingModel
BraintrustLangchain.java (lines 22–152) only handles:
AiServices<T>wrapping (lines 22–85)OpenAiChatModelwrapping (lines 87–118)OpenAiStreamingChatModelwrapping (lines 120–152)
There is no wrap(OpenTelemetry, EmbeddingModel) method or any reference to embedding models.
No auto-instrumentation for embedding builders
LangchainInstrumentationModule.java (lines 44–145) registers ByteBuddy advice for exactly 3 builder classes:
OpenAiChatModel$OpenAiChatModelBuilderOpenAiStreamingChatModel$OpenAiStreamingChatModelBuilderAiServices
No embedding model builder (e.g., OpenAiEmbeddingModel$OpenAiEmbeddingModelBuilder) is targeted.
No fallback to upstream SDK auto-instrumentation
LangChain4j embedding model implementations use LangChain4j's own internal dev.langchain4j.http.client.HttpClient, not the upstream provider SDKs (com.openai:openai-java, etc.). This means the OpenAI auto-instrumentation module (openai_2_8_0) does not intercept embedding calls made through LangChain4j's OpenAiEmbeddingModel.
The WrappedHttpClient class in the LangChain4j module already wraps LangChain4j's internal HTTP client for chat models — the same pattern could be applied to embedding models.
Affected LangChain4j embedding models
| LangChain4j class | Provider |
|---|---|
OpenAiEmbeddingModel |
OpenAI |
AzureOpenAiEmbeddingModel |
Azure OpenAI |
GoogleAiEmbeddingModel |
Google AI |
VertexAiEmbeddingModel |
Google Vertex AI |
OllamaEmbeddingModel |
Ollama |
MistralAiEmbeddingModel |
Mistral AI |
Braintrust docs status
- LangChain4j is not mentioned on the Braintrust integrations page at https://www.braintrust.dev/docs/integrations/ai-providers: not_found
- No LangChain4j-specific documentation exists for the Java SDK
Upstream sources
- LangChain4j EmbeddingModel interface: https://github.com/langchain4j/langchain4j —
EmbeddingModelis a core interface withembed(String),embed(TextSegment), andembedAll(List<TextSegment>)methods - LangChain4j embedding model implementations: https://docs.langchain4j.dev/integrations/embedding-models — documents 15+ embedding model providers
- LangChain4j OpenAI embedding model:
langchain4j-open-aimodule providesOpenAiEmbeddingModelas a first-party integration
Local files inspected
braintrust-sdk/instrumentation/langchain_1_8_0/src/main/java/dev/braintrust/instrumentation/langchain/v1_8_0/BraintrustLangchain.java— lines 22–152 (only chat model and AiServices wrapping; no embedding model handling)braintrust-sdk/instrumentation/langchain_1_8_0/src/main/java/dev/braintrust/instrumentation/langchain/v1_8_0/auto/LangchainInstrumentationModule.java— lines 44–145 (only chat model builders and AiServices targeted; no embedding builder)braintrust-sdk/instrumentation/langchain_1_8_0/src/main/java/dev/braintrust/instrumentation/langchain/v1_8_0/WrappedHttpClient.java— existing HTTP client wrapper that could be reused for embedding modelsbraintrust-sdk/instrumentation/langchain_1_8_0/src/test/java/dev/braintrust/instrumentation/langchain/v1_8_0/BraintrustLangchainTest.java— no embedding model tests exist
- Lingua principale
- Java
- Stelle
- 21
- Fork
- 5
- Merge medio
- 2g 7h
- PR unite (30g)
- 8
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di braintrustdata/braintrust-sdk-java
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Tutte le issue di braintrustdata/braintrust-sdk-java
Issue simili
-
awaiting triage bug Causes friction Hop Gui P1 P2 Transforms
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
apache/flink-agents#1152 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
jenkinsci/blueocean-plugin#5417 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
objectionary/eo-graphs#75 ·