-
Notifications
You must be signed in to change notification settings - Fork 788
feat: add optional dependencies (extras) for traceloop-sdk integration… #3240
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -60,13 +60,20 @@ If you already have OpenTelemetry instrumented, you can just add any of our inst | |
|
||
## 🚀 Getting Started | ||
|
||
|
||
The easiest way to get started is to use our SDK. | ||
For a complete guide, go to our [docs](https://traceloop.com/docs/openllmetry/getting-started-python). | ||
|
||
Install the SDK: | ||
Install the SDK with all instrumentations: | ||
|
||
```bash | ||
pip install traceloop-sdk[full] | ||
``` | ||
|
||
Or, to install only the instrumentations you need (for example, OpenAI and LangChain): | ||
|
||
```bash | ||
pip install traceloop-sdk | ||
pip install traceloop-sdk[openai,langchain] | ||
``` | ||
Comment on lines
+73
to
77
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion Also quote selective extras; add a brief cross-shell note Same quoting concern applies here. Suggest a short note that quoting is required in PowerShell/zsh. Apply: -Or, to install only the instrumentations you need (for example, OpenAI and LangChain):
+Or, to install only the instrumentations you need (for example, OpenAI and LangChain):
+Tip: quote extras for zsh/PowerShell compatibility.
```bash
-pip install traceloop-sdk[openai,langchain]
+pip install "traceloop-sdk[openai,langchain]"
In README.md around lines 73 to 77, the pip install command for selective extras
|
||
|
||
Then, to start instrumenting your code, just add this line to your code: | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -29,41 +29,6 @@ opentelemetry-api = "^1.28.0" | |
opentelemetry-sdk = "^1.28.0" | ||
opentelemetry-exporter-otlp-proto-http = "^1.28.0" | ||
opentelemetry-exporter-otlp-proto-grpc = "^1.28.0" | ||
opentelemetry-instrumentation-logging = ">=0.50b0" | ||
opentelemetry-instrumentation-requests = ">=0.50b0" | ||
opentelemetry-instrumentation-sqlalchemy = ">=0.50b0" | ||
opentelemetry-instrumentation-urllib3 = ">=0.50b0" | ||
opentelemetry-instrumentation-threading = ">=0.50b0" | ||
opentelemetry-instrumentation-redis = ">=0.50b0" | ||
opentelemetry-semantic-conventions-ai = "0.4.11" | ||
opentelemetry-instrumentation-mistralai = { path = "../opentelemetry-instrumentation-mistralai", develop = true } | ||
opentelemetry-instrumentation-openai = { path = "../opentelemetry-instrumentation-openai", develop = true } | ||
opentelemetry-instrumentation-openai-agents = { path = "../opentelemetry-instrumentation-openai-agents", develop = true } | ||
opentelemetry-instrumentation-ollama = { path = "../opentelemetry-instrumentation-ollama", develop = true } | ||
opentelemetry-instrumentation-anthropic = { path = "../opentelemetry-instrumentation-anthropic", develop = true } | ||
opentelemetry-instrumentation-cohere = { path = "../opentelemetry-instrumentation-cohere", develop = true } | ||
opentelemetry-instrumentation-crewai = { path = "../opentelemetry-instrumentation-crewai", develop = true } | ||
opentelemetry-instrumentation-google-generativeai = { path = "../opentelemetry-instrumentation-google-generativeai", develop = true } | ||
opentelemetry-instrumentation-pinecone = { path = "../opentelemetry-instrumentation-pinecone", develop = true } | ||
opentelemetry-instrumentation-qdrant = { path = "../opentelemetry-instrumentation-qdrant", develop = true } | ||
opentelemetry-instrumentation-langchain = { path = "../opentelemetry-instrumentation-langchain", develop = true } | ||
opentelemetry-instrumentation-lancedb = { path = "../opentelemetry-instrumentation-lancedb", develop = true } | ||
opentelemetry-instrumentation-chromadb = { path = "../opentelemetry-instrumentation-chromadb", develop = true } | ||
opentelemetry-instrumentation-transformers = { path = "../opentelemetry-instrumentation-transformers", develop = true } | ||
opentelemetry-instrumentation-together = { path = "../opentelemetry-instrumentation-together", develop = true } | ||
opentelemetry-instrumentation-llamaindex = { path = "../opentelemetry-instrumentation-llamaindex", develop = true } | ||
opentelemetry-instrumentation-milvus = { path = "../opentelemetry-instrumentation-milvus", develop = true } | ||
opentelemetry-instrumentation-haystack = { path = "../opentelemetry-instrumentation-haystack", develop = true } | ||
opentelemetry-instrumentation-bedrock = { path = "../opentelemetry-instrumentation-bedrock", develop = true } | ||
opentelemetry-instrumentation-sagemaker = { path = "../opentelemetry-instrumentation-sagemaker", develop = true } | ||
opentelemetry-instrumentation-replicate = { path = "../opentelemetry-instrumentation-replicate", develop = true } | ||
opentelemetry-instrumentation-vertexai = { path = "../opentelemetry-instrumentation-vertexai", develop = true } | ||
opentelemetry-instrumentation-watsonx = { path = "../opentelemetry-instrumentation-watsonx", develop = true } | ||
opentelemetry-instrumentation-weaviate = { path = "../opentelemetry-instrumentation-weaviate", develop = true } | ||
opentelemetry-instrumentation-alephalpha = { path = "../opentelemetry-instrumentation-alephalpha", develop = true } | ||
opentelemetry-instrumentation-marqo = { path = "../opentelemetry-instrumentation-marqo", develop = true } | ||
opentelemetry-instrumentation-groq = { path = "../opentelemetry-instrumentation-groq", develop = true } | ||
opentelemetry-instrumentation-mcp = { path = "../opentelemetry-instrumentation-mcp", develop = true } | ||
colorama = "^0.4.6" | ||
tenacity = ">=8.2.3, <10.0" | ||
pydantic = ">=1" | ||
|
@@ -89,5 +54,146 @@ langchain = "^0.2.5" | |
langchain-openai = "^0.1.15" | ||
|
||
[build-system] | ||
[tool.poetry.extras] | ||
llm = [ | ||
"../opentelemetry-instrumentation-openai", | ||
"../opentelemetry-instrumentation-anthropic", | ||
"../opentelemetry-instrumentation-cohere", | ||
"../opentelemetry-instrumentation-groq", | ||
"../opentelemetry-instrumentation-ollama", | ||
"../opentelemetry-instrumentation-mistralai", | ||
"../opentelemetry-instrumentation-bedrock", | ||
"../opentelemetry-instrumentation-sagemaker", | ||
"../opentelemetry-instrumentation-replicate", | ||
"../opentelemetry-instrumentation-vertexai", | ||
"../opentelemetry-instrumentation-watsonx", | ||
"../opentelemetry-instrumentation-google-generativeai", | ||
"../opentelemetry-instrumentation-alephalpha" | ||
] | ||
frameworks = [ | ||
"../opentelemetry-instrumentation-langchain", | ||
"../opentelemetry-instrumentation-llamaindex", | ||
"../opentelemetry-instrumentation-crewai", | ||
"../opentelemetry-instrumentation-haystack", | ||
"../opentelemetry-instrumentation-transformers", | ||
"../opentelemetry-instrumentation-together" | ||
] | ||
vectorstores = [ | ||
"../opentelemetry-instrumentation-pinecone", | ||
"../opentelemetry-instrumentation-qdrant", | ||
"../opentelemetry-instrumentation-weaviate", | ||
"../opentelemetry-instrumentation-chromadb", | ||
"../opentelemetry-instrumentation-lancedb", | ||
"../opentelemetry-instrumentation-milvus", | ||
"../opentelemetry-instrumentation-marqo" | ||
] | ||
cloud = [ | ||
"../opentelemetry-instrumentation-bedrock", | ||
"../opentelemetry-instrumentation-vertexai", | ||
"../opentelemetry-instrumentation-sagemaker", | ||
"../opentelemetry-instrumentation-watsonx", | ||
"../opentelemetry-instrumentation-google-generativeai" | ||
] | ||
minimal = [ | ||
"opentelemetry-api", | ||
"opentelemetry-sdk", | ||
"opentelemetry-exporter-otlp-proto-http", | ||
"opentelemetry-exporter-otlp-proto-grpc", | ||
"colorama", | ||
"tenacity", | ||
"pydantic", | ||
"jinja2", | ||
"deprecated", | ||
"posthog", | ||
"aiohttp" | ||
] | ||
all = [ | ||
"llm", | ||
"frameworks", | ||
"vectorstores", | ||
"cloud", | ||
"logging", | ||
"requests", | ||
"sqlalchemy", | ||
"urllib3", | ||
"threading", | ||
"redis", | ||
"semantic-conventions-ai", | ||
"../opentelemetry-instrumentation-openai-agents", | ||
"../opentelemetry-instrumentation-mcp", | ||
"../opentelemetry-instrumentation-groq" | ||
] | ||
logging = ["opentelemetry-instrumentation-logging"] | ||
requests = ["opentelemetry-instrumentation-requests"] | ||
sqlalchemy = ["opentelemetry-instrumentation-sqlalchemy"] | ||
urllib3 = ["opentelemetry-instrumentation-urllib3"] | ||
threading = ["opentelemetry-instrumentation-threading"] | ||
redis = ["opentelemetry-instrumentation-redis"] | ||
semantic-conventions-ai = ["opentelemetry-semantic-conventions-ai"] | ||
mistralai = ["../opentelemetry-instrumentation-mistralai"] | ||
openai = ["../opentelemetry-instrumentation-openai"] | ||
openai-agents = ["../opentelemetry-instrumentation-openai-agents"] | ||
ollama = ["../opentelemetry-instrumentation-ollama"] | ||
anthropic = ["../opentelemetry-instrumentation-anthropic"] | ||
cohere = ["../opentelemetry-instrumentation-cohere"] | ||
crewai = ["../opentelemetry-instrumentation-crewai"] | ||
google-generativeai = ["../opentelemetry-instrumentation-google-generativeai"] | ||
pinecone = ["../opentelemetry-instrumentation-pinecone"] | ||
qdrant = ["../opentelemetry-instrumentation-qdrant"] | ||
langchain = ["../opentelemetry-instrumentation-langchain"] | ||
lancedb = ["../opentelemetry-instrumentation-lancedb"] | ||
chromadb = ["../opentelemetry-instrumentation-chromadb"] | ||
transformers = ["../opentelemetry-instrumentation-transformers"] | ||
together = ["../opentelemetry-instrumentation-together"] | ||
llamaindex = ["../opentelemetry-instrumentation-llamaindex"] | ||
milvus = ["../opentelemetry-instrumentation-milvus"] | ||
haystack = ["../opentelemetry-instrumentation-haystack"] | ||
bedrock = ["../opentelemetry-instrumentation-bedrock"] | ||
sagemaker = ["../opentelemetry-instrumentation-sagemaker"] | ||
replicate = ["../opentelemetry-instrumentation-replicate"] | ||
vertexai = ["../opentelemetry-instrumentation-vertexai"] | ||
watsonx = ["../opentelemetry-instrumentation-watsonx"] | ||
weaviate = ["../opentelemetry-instrumentation-weaviate"] | ||
alephalpha = ["../opentelemetry-instrumentation-alephalpha"] | ||
marqo = ["../opentelemetry-instrumentation-marqo"] | ||
groq = ["../opentelemetry-instrumentation-groq"] | ||
mcp = ["../opentelemetry-instrumentation-mcp"] | ||
Comment on lines
+57
to
+160
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Extras reference undeclared path dependencies – build will fail.
but none of these path packages are declared in Add each instrumentation as an optional dependency first, then reference its name (not the path) in the extras list, e.g.: [tool.poetry.dependencies]
opentelemetry-instrumentation-openai = {path = "../opentelemetry-instrumentation-openai", optional = true}
[tool.poetry.extras]
openai = ["opentelemetry-instrumentation-openai"]
llm = ["openai", ...] Without this fix, publishing the wheel or installing with extras will error out. 🤖 Prompt for AI Agents
|
||
full = [ | ||
"opentelemetry-instrumentation-logging", | ||
"opentelemetry-instrumentation-requests", | ||
"opentelemetry-instrumentation-sqlalchemy", | ||
"opentelemetry-instrumentation-urllib3", | ||
"opentelemetry-instrumentation-threading", | ||
"opentelemetry-instrumentation-redis", | ||
"opentelemetry-semantic-conventions-ai", | ||
"../opentelemetry-instrumentation-mistralai", | ||
"../opentelemetry-instrumentation-openai", | ||
"../opentelemetry-instrumentation-openai-agents", | ||
"../opentelemetry-instrumentation-ollama", | ||
"../opentelemetry-instrumentation-anthropic", | ||
"../opentelemetry-instrumentation-cohere", | ||
"../opentelemetry-instrumentation-crewai", | ||
"../opentelemetry-instrumentation-google-generativeai", | ||
"../opentelemetry-instrumentation-pinecone", | ||
"../opentelemetry-instrumentation-qdrant", | ||
"../opentelemetry-instrumentation-langchain", | ||
"../opentelemetry-instrumentation-lancedb", | ||
"../opentelemetry-instrumentation-chromadb", | ||
"../opentelemetry-instrumentation-transformers", | ||
"../opentelemetry-instrumentation-together", | ||
"../opentelemetry-instrumentation-llamaindex", | ||
"../opentelemetry-instrumentation-milvus", | ||
"../opentelemetry-instrumentation-haystack", | ||
"../opentelemetry-instrumentation-bedrock", | ||
"../opentelemetry-instrumentation-sagemaker", | ||
"../opentelemetry-instrumentation-replicate", | ||
"../opentelemetry-instrumentation-vertexai", | ||
"../opentelemetry-instrumentation-watsonx", | ||
"../opentelemetry-instrumentation-weaviate", | ||
"../opentelemetry-instrumentation-alephalpha", | ||
"../opentelemetry-instrumentation-marqo", | ||
"../opentelemetry-instrumentation-groq", | ||
"../opentelemetry-instrumentation-mcp" | ||
] | ||
requires = ["poetry-core"] | ||
build-backend = "poetry.core.masonry.api" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Quote extras to avoid shell globbing and PowerShell parsing issues
Unquoted extras can break in zsh/bash (globbing of [..]) and PowerShell. Recommend quoting for cross-shell compatibility.
Apply:
🤖 Prompt for AI Agents