langtrace-python-sdk 2.1.21__tar.gz → 2.1.24__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/PKG-INFO +3 -1
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/README.md +2 -0
- langtrace_python_sdk-2.1.24/src/examples/crewai_example/basic.py +70 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/constants/instrumentation/common.py +1 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/__init__.py +4 -2
- langtrace_python_sdk-2.1.24/src/langtrace_python_sdk/instrumentation/crewai/__init__.py +3 -0
- langtrace_python_sdk-2.1.24/src/langtrace_python_sdk/instrumentation/crewai/instrumentation.py +53 -0
- langtrace_python_sdk-2.1.24/src/langtrace_python_sdk/instrumentation/crewai/patch.py +173 -0
- langtrace_python_sdk-2.1.24/src/langtrace_python_sdk/instrumentation/dspy/__init__.py +3 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/dspy/instrumentation.py +1 -1
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/dspy/patch.py +18 -18
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/openai/patch.py +152 -203
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/langtrace.py +4 -2
- langtrace_python_sdk-2.1.24/src/langtrace_python_sdk/version.py +1 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/openai/cassettes/test_async_chat_completion_streaming.yaml +29 -35
- langtrace_python_sdk-2.1.24/src/tests/openai/cassettes/test_chat_completion_streaming.yaml +152 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/openai/test_chat_completion.py +4 -4
- langtrace_python_sdk-2.1.21/src/langtrace_python_sdk/instrumentation/dspy/__init__.py +0 -3
- langtrace_python_sdk-2.1.21/src/langtrace_python_sdk/version.py +0 -1
- langtrace_python_sdk-2.1.21/src/tests/openai/cassettes/test_chat_completion_streaming.yaml +0 -200860
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/.gitignore +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/LICENSE +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/pyproject.toml +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/anthropic_example/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/anthropic_example/completion.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/chroma_example/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/chroma_example/basic.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/cohere_example/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/cohere_example/chat.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/cohere_example/chat_stream.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/cohere_example/embed.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/cohere_example/rerank.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/cohere_example/tools.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/dspy_example/math_problems_cot.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/dspy_example/program_of_thought_basic.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/dspy_example/quiz_gen.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/dspy_example/react.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/fastapi_example/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/fastapi_example/basic_route.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/hiveagent_example/basic.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/inspect_ai_example/basic_eval.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/langchain_example/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/langchain_example/basic.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/langchain_example/groq_example.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/langchain_example/langgraph_example.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/langchain_example/tool.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/llamaindex_example/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/llamaindex_example/agent.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/llamaindex_example/basic.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/llamaindex_example/data/abramov.txt +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/ollama_example/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/ollama_example/basic.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/openai_example/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/openai_example/async_tool_calling_nonstreaming.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/openai_example/async_tool_calling_streaming.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/openai_example/chat_completion.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/openai_example/embeddings_create.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/openai_example/function_calling.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/openai_example/images_edit.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/openai_example/images_generate.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/openai_example/resources/lounge_flamingo.png +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/openai_example/resources/mask.png +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/openai_example/tool_calling.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/openai_example/tool_calling_nonstreaming.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/openai_example/tool_calling_streaming.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/perplexity_example/basic.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/pinecone_example/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/pinecone_example/basic.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/qdrant_example/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/qdrant_example/basic.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/weaviate_example/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/examples/weaviate_example/query_text.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/constants/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/constants/exporter/langtrace_exporter.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/constants/instrumentation/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/constants/instrumentation/anthropic.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/constants/instrumentation/chroma.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/constants/instrumentation/cohere.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/constants/instrumentation/groq.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/constants/instrumentation/ollama.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/constants/instrumentation/openai.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/constants/instrumentation/pinecone.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/constants/instrumentation/qdrant.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/constants/instrumentation/weaviate.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/extensions/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/extensions/langtrace_exporter.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/extensions/langtrace_filesystem.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/anthropic/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/anthropic/instrumentation.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/anthropic/patch.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/chroma/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/chroma/instrumentation.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/chroma/patch.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/cohere/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/cohere/instrumentation.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/cohere/patch.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/groq/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/groq/instrumentation.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/groq/patch.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/langchain/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/langchain/instrumentation.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/langchain/patch.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/langchain_community/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/langchain_community/instrumentation.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/langchain_community/patch.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/langchain_core/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/langchain_core/instrumentation.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/langchain_core/patch.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/langgraph/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/langgraph/instrumentation.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/langgraph/patch.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/llamaindex/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/llamaindex/instrumentation.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/llamaindex/patch.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/ollama/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/ollama/instrumentation.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/ollama/patch.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/openai/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/openai/instrumentation.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/pinecone/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/pinecone/instrumentation.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/pinecone/patch.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/qdrant/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/qdrant/instrumentation.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/qdrant/patch.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/weaviate/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/weaviate/instrumentation.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/instrumentation/weaviate/patch.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/types/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/utils/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/utils/langtrace_sampler.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/utils/llm.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/utils/misc.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/utils/prompt_registry.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/utils/sdk_version_checker.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/utils/silently_fail.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/utils/types.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/langtrace_python_sdk/utils/with_root_span.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/run_example.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/__init__.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/anthropic/cassettes/test_anthropic.yaml +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/anthropic/cassettes/test_anthropic_streaming.yaml +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/anthropic/cassettes/test_async_anthropic_streaming.yaml +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/anthropic/conftest.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/anthropic/test_anthropic.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/chroma/conftest.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/chroma/test_chroma.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/cohere/cassettes/test_cohere_chat.yaml +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/cohere/cassettes/test_cohere_chat_streaming.yaml +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/cohere/cassettes/test_cohere_embed.yaml +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/cohere/cassettes/test_cohere_rerank.yaml +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/cohere/conftest.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/cohere/test_cohere_chat.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/cohere/test_cohere_embed.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/cohere/test_cohere_rerank.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/conftest.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/langchain/cassettes/test_langchain.yaml +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/langchain/conftest.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/langchain/test_langchain.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/openai/cassettes/test_async_image_generation.yaml +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/openai/cassettes/test_chat_completion.yaml +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/openai/cassettes/test_image_generation.yaml +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/openai/conftest.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/openai/test_embeddings.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/openai/test_image_generation.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/pinecone/cassettes/test_query.yaml +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/pinecone/cassettes/test_upsert.yaml +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/pinecone/conftest.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/pinecone/test_pinecone.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/qdrant/conftest.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/qdrant/test_qdrant.py +0 -0
- {langtrace_python_sdk-2.1.21 → langtrace_python_sdk-2.1.24}/src/tests/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: langtrace-python-sdk
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.24
|
|
4
4
|
Summary: Python SDK for LangTrace
|
|
5
5
|
Project-URL: Homepage, https://github.com/Scale3-Labs/langtrace-python-sdk
|
|
6
6
|
Author-email: Scale3 Labs <engineering@scale3labs.com>
|
|
@@ -283,6 +283,8 @@ Langtrace automatically captures traces from the following vendors:
|
|
|
283
283
|
| Groq | LLM | :x: | :white_check_mark: |
|
|
284
284
|
| Langchain | Framework | :x: | :white_check_mark: |
|
|
285
285
|
| LlamaIndex | Framework | :white_check_mark: | :white_check_mark: |
|
|
286
|
+
| DSPy | Framework | :x: | :white_check_mark: |
|
|
287
|
+
| CrewAI | Framework | :x: | :white_check_mark: |
|
|
286
288
|
| Pinecone | Vector Database | :white_check_mark: | :white_check_mark: |
|
|
287
289
|
| ChromaDB | Vector Database | :white_check_mark: | :white_check_mark: |
|
|
288
290
|
| QDrant | Vector Database | :x: | :white_check_mark: |
|
|
@@ -241,6 +241,8 @@ Langtrace automatically captures traces from the following vendors:
|
|
|
241
241
|
| Groq | LLM | :x: | :white_check_mark: |
|
|
242
242
|
| Langchain | Framework | :x: | :white_check_mark: |
|
|
243
243
|
| LlamaIndex | Framework | :white_check_mark: | :white_check_mark: |
|
|
244
|
+
| DSPy | Framework | :x: | :white_check_mark: |
|
|
245
|
+
| CrewAI | Framework | :x: | :white_check_mark: |
|
|
244
246
|
| Pinecone | Vector Database | :white_check_mark: | :white_check_mark: |
|
|
245
247
|
| ChromaDB | Vector Database | :white_check_mark: | :white_check_mark: |
|
|
246
248
|
| QDrant | Vector Database | :x: | :white_check_mark: |
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
os.environ["OPENAI_MODEL_NAME"] = "gpt-3.5-turbo"
|
|
4
|
+
os.environ["SERPER_API_KEY"] = "" # serper.dev API key
|
|
5
|
+
from langtrace_python_sdk import langtrace
|
|
6
|
+
from langtrace_python_sdk.utils.with_root_span import with_langtrace_root_span
|
|
7
|
+
from crewai import Crew, Process
|
|
8
|
+
from crewai import Task
|
|
9
|
+
from crewai import Agent
|
|
10
|
+
from crewai_tools import SerperDevTool
|
|
11
|
+
from crewai_tools import YoutubeVideoSearchTool
|
|
12
|
+
|
|
13
|
+
langtrace.init()
|
|
14
|
+
|
|
15
|
+
search_tool = SerperDevTool()
|
|
16
|
+
|
|
17
|
+
# Targeted search within a specific Youtube video's content
|
|
18
|
+
youtube_tool = YoutubeVideoSearchTool(
|
|
19
|
+
youtube_video_url="https://www.youtube.com/watch?v=blqIZGXWUpU"
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
# Creating a senior researcher agent with memory and verbose mode
|
|
23
|
+
researcher = Agent(
|
|
24
|
+
role="Senior Researcher",
|
|
25
|
+
goal="Uncover groundbreaking technologies in {topic}",
|
|
26
|
+
verbose=True,
|
|
27
|
+
memory=True,
|
|
28
|
+
backstory=(
|
|
29
|
+
"Driven by curiosity, you're at the forefront of"
|
|
30
|
+
"innovation, eager to explore and share knowledge that could change"
|
|
31
|
+
"the world."
|
|
32
|
+
),
|
|
33
|
+
tools=[youtube_tool],
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
# Research task
|
|
37
|
+
research_task = Task(
|
|
38
|
+
description=(
|
|
39
|
+
"Do a {topic} of the given youtube video."
|
|
40
|
+
"Focus on identifying the overall narrative."
|
|
41
|
+
"Your final report should clearly articulate the key points."
|
|
42
|
+
),
|
|
43
|
+
expected_output="10 key points from the shared video.",
|
|
44
|
+
tools=[youtube_tool],
|
|
45
|
+
agent=researcher,
|
|
46
|
+
callback="research_callback", # Example of task callback
|
|
47
|
+
human_input=True,
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
# Forming the tech-focused crew with some enhanced configurations
|
|
52
|
+
crew = Crew(
|
|
53
|
+
agents=[researcher],
|
|
54
|
+
tasks=[research_task],
|
|
55
|
+
process=Process.sequential, # Optional: Sequential task execution is default
|
|
56
|
+
memory=False,
|
|
57
|
+
cache=False,
|
|
58
|
+
max_rpm=20,
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
# Starting the task execution process with enhanced feedback
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
@with_langtrace_root_span("Crew")
|
|
65
|
+
def test_crew():
|
|
66
|
+
result = crew.kickoff(inputs={"topic": "summary"})
|
|
67
|
+
return result
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
test_crew()
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from .anthropic import AnthropicInstrumentation
|
|
2
2
|
from .chroma import ChromaInstrumentation
|
|
3
3
|
from .cohere import CohereInstrumentation
|
|
4
|
+
from .crewai import CrewAIInstrumentation
|
|
4
5
|
from .groq import GroqInstrumentation
|
|
5
6
|
from .langchain import LangchainInstrumentation
|
|
6
7
|
from .langchain_community import LangchainCommunityInstrumentation
|
|
@@ -12,12 +13,13 @@ from .pinecone import PineconeInstrumentation
|
|
|
12
13
|
from .qdrant import QdrantInstrumentation
|
|
13
14
|
from .weaviate import WeaviateInstrumentation
|
|
14
15
|
from .ollama import OllamaInstrumentor
|
|
15
|
-
from .dspy import
|
|
16
|
+
from .dspy import DspyInstrumentation
|
|
16
17
|
|
|
17
18
|
__all__ = [
|
|
18
19
|
"AnthropicInstrumentation",
|
|
19
20
|
"ChromaInstrumentation",
|
|
20
21
|
"CohereInstrumentation",
|
|
22
|
+
"CrewAIInstrumentation",
|
|
21
23
|
"GroqInstrumentation",
|
|
22
24
|
"LangchainInstrumentation",
|
|
23
25
|
"LangchainCommunityInstrumentation",
|
|
@@ -29,5 +31,5 @@ __all__ = [
|
|
|
29
31
|
"QdrantInstrumentation",
|
|
30
32
|
"WeaviateInstrumentation",
|
|
31
33
|
"OllamaInstrumentor",
|
|
32
|
-
"
|
|
34
|
+
"DspyInstrumentation",
|
|
33
35
|
]
|
langtrace_python_sdk-2.1.24/src/langtrace_python_sdk/instrumentation/crewai/instrumentation.py
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Copyright (c) 2024 Scale3 Labs
|
|
3
|
+
|
|
4
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
you may not use this file except in compliance with the License.
|
|
6
|
+
You may obtain a copy of the License at
|
|
7
|
+
|
|
8
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
|
|
10
|
+
Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
See the License for the specific language governing permissions and
|
|
14
|
+
limitations under the License.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
|
|
18
|
+
from opentelemetry.trace import get_tracer
|
|
19
|
+
from wrapt import wrap_function_wrapper as _W
|
|
20
|
+
from typing import Collection
|
|
21
|
+
from importlib_metadata import version as v
|
|
22
|
+
from .patch import patch_crew
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class CrewAIInstrumentation(BaseInstrumentor):
|
|
26
|
+
"""
|
|
27
|
+
The CrewAIInstrumentation class represents the CrewAI instrumentation"""
|
|
28
|
+
|
|
29
|
+
def instrumentation_dependencies(self) -> Collection[str]:
|
|
30
|
+
return ["crewai >= 0.32.0"]
|
|
31
|
+
|
|
32
|
+
def _instrument(self, **kwargs):
|
|
33
|
+
tracer_provider = kwargs.get("tracer_provider")
|
|
34
|
+
tracer = get_tracer(__name__, "", tracer_provider)
|
|
35
|
+
version = v("crewai")
|
|
36
|
+
_W(
|
|
37
|
+
"crewai.crew",
|
|
38
|
+
"Crew.kickoff",
|
|
39
|
+
patch_crew("Crew.kickoff", version, tracer),
|
|
40
|
+
)
|
|
41
|
+
_W(
|
|
42
|
+
"crewai.agent",
|
|
43
|
+
"Agent.execute_task",
|
|
44
|
+
patch_crew("Agent.execute_task", version, tracer),
|
|
45
|
+
)
|
|
46
|
+
_W(
|
|
47
|
+
"crewai.task",
|
|
48
|
+
"Task.execute",
|
|
49
|
+
patch_crew("Task.execute", version, tracer),
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
def _uninstrument(self, **kwargs):
|
|
53
|
+
pass
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import json
|
|
2
|
+
from importlib_metadata import version as v
|
|
3
|
+
from langtrace_python_sdk.constants import LANGTRACE_SDK_NAME
|
|
4
|
+
from langtrace_python_sdk.utils import set_span_attribute
|
|
5
|
+
from langtrace_python_sdk.utils.silently_fail import silently_fail
|
|
6
|
+
from langtrace_python_sdk.constants.instrumentation.common import (
|
|
7
|
+
LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY,
|
|
8
|
+
SERVICE_PROVIDERS,
|
|
9
|
+
)
|
|
10
|
+
from opentelemetry import baggage
|
|
11
|
+
from langtrace.trace_attributes import FrameworkSpanAttributes
|
|
12
|
+
from opentelemetry.trace import SpanKind
|
|
13
|
+
from opentelemetry.trace.status import Status, StatusCode
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
crew_properties = {
|
|
17
|
+
"tasks": "object",
|
|
18
|
+
"agents": "object",
|
|
19
|
+
"cache": "bool",
|
|
20
|
+
"process": "object",
|
|
21
|
+
"verbose": "bool",
|
|
22
|
+
"memory": "bool",
|
|
23
|
+
"embedder": "json",
|
|
24
|
+
"full_output": "bool",
|
|
25
|
+
"manager_llm": "object",
|
|
26
|
+
"manager_agent": "object",
|
|
27
|
+
"manager_callbacks": "object",
|
|
28
|
+
"function_calling_llm": "object",
|
|
29
|
+
"config": "json",
|
|
30
|
+
"id": "object",
|
|
31
|
+
"max_rpm": "int",
|
|
32
|
+
"share_crew": "bool",
|
|
33
|
+
"step_callback": "object",
|
|
34
|
+
"task_callback": "object",
|
|
35
|
+
"prompt_file": "object",
|
|
36
|
+
"output_log_file": "object",
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
task_properties = {
|
|
40
|
+
"id": "object",
|
|
41
|
+
"used_tools": "int",
|
|
42
|
+
"tools_errors": "int",
|
|
43
|
+
"delegations": "int",
|
|
44
|
+
"i18n": "object",
|
|
45
|
+
"thread": "object",
|
|
46
|
+
"prompt_context": "object",
|
|
47
|
+
"description": "str",
|
|
48
|
+
"expected_output": "str",
|
|
49
|
+
"config": "object",
|
|
50
|
+
"callback": "str",
|
|
51
|
+
"agent": "object",
|
|
52
|
+
"context": "object",
|
|
53
|
+
"async_execution": "bool",
|
|
54
|
+
"output_json": "object",
|
|
55
|
+
"output_pydantic": "object",
|
|
56
|
+
"output_file": "object",
|
|
57
|
+
"output": "object",
|
|
58
|
+
"tools": "object",
|
|
59
|
+
"human_input": "bool",
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
agent_properties = {
|
|
63
|
+
"formatting_errors": "int",
|
|
64
|
+
"id": "object",
|
|
65
|
+
"role": "str",
|
|
66
|
+
"goal": "str",
|
|
67
|
+
"backstory": "str",
|
|
68
|
+
"cache": "bool",
|
|
69
|
+
"config": "object",
|
|
70
|
+
"max_rpm": "int",
|
|
71
|
+
"verbose": "bool",
|
|
72
|
+
"allow_delegation": "bool",
|
|
73
|
+
"tools": "object",
|
|
74
|
+
"max_iter": "int",
|
|
75
|
+
"max_execution_time": "object",
|
|
76
|
+
"agent_executor": "object",
|
|
77
|
+
"tools_handler": "object",
|
|
78
|
+
"force_answer_max_iterations": "int",
|
|
79
|
+
"crew": "object",
|
|
80
|
+
"cache_handler": "object",
|
|
81
|
+
"step_callback": "object",
|
|
82
|
+
"i18n": "object",
|
|
83
|
+
"llm": "object",
|
|
84
|
+
"function_calling_llm": "object",
|
|
85
|
+
"callbacks": "object",
|
|
86
|
+
"system_template": "object",
|
|
87
|
+
"prompt_template": "object",
|
|
88
|
+
"response_template": "object",
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def patch_crew(operation_name, version, tracer):
|
|
93
|
+
def traced_method(wrapped, instance, args, kwargs):
|
|
94
|
+
|
|
95
|
+
service_provider = SERVICE_PROVIDERS["CREWAI"]
|
|
96
|
+
extra_attributes = baggage.get_baggage(LANGTRACE_ADDITIONAL_SPAN_ATTRIBUTES_KEY)
|
|
97
|
+
span_attributes = {
|
|
98
|
+
"langtrace.sdk.name": "langtrace-python-sdk",
|
|
99
|
+
"langtrace.service.name": service_provider,
|
|
100
|
+
"langtrace.service.type": "framework",
|
|
101
|
+
"langtrace.service.version": version,
|
|
102
|
+
"langtrace.version": v(LANGTRACE_SDK_NAME),
|
|
103
|
+
**(extra_attributes if extra_attributes is not None else {}),
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
crew_config = {}
|
|
107
|
+
for key, value in instance.__dict__.items():
|
|
108
|
+
if instance.__class__.__name__ == "Crew":
|
|
109
|
+
if key in crew_properties and value is not None:
|
|
110
|
+
if crew_properties[key] == "json":
|
|
111
|
+
crew_config[key] = json.dumps(value)
|
|
112
|
+
elif crew_properties[key] == "object":
|
|
113
|
+
crew_config[key] = str(value)
|
|
114
|
+
else:
|
|
115
|
+
crew_config[key] = value
|
|
116
|
+
elif instance.__class__.__name__ == "Agent":
|
|
117
|
+
if key in agent_properties and value is not None:
|
|
118
|
+
if agent_properties[key] == "json":
|
|
119
|
+
crew_config[key] = json.dumps(value)
|
|
120
|
+
elif agent_properties[key] == "object":
|
|
121
|
+
crew_config[key] = str(value)
|
|
122
|
+
else:
|
|
123
|
+
crew_config[key] = value
|
|
124
|
+
elif instance.__class__.__name__ == "Task":
|
|
125
|
+
if key in task_properties and value is not None:
|
|
126
|
+
if task_properties[key] == "json":
|
|
127
|
+
crew_config[key] = json.dumps(value)
|
|
128
|
+
elif task_properties[key] == "object":
|
|
129
|
+
crew_config[key] = str(value)
|
|
130
|
+
else:
|
|
131
|
+
crew_config[key] = value
|
|
132
|
+
if crew_config:
|
|
133
|
+
if instance.__class__.__name__ == "Crew":
|
|
134
|
+
if "inputs" in kwargs and kwargs["inputs"]:
|
|
135
|
+
crew_config["inputs"] = json.dumps(kwargs["inputs"])
|
|
136
|
+
span_attributes["crewai.crew.config"] = json.dumps(crew_config)
|
|
137
|
+
elif instance.__class__.__name__ == "Agent":
|
|
138
|
+
if "context" in kwargs and kwargs["context"]:
|
|
139
|
+
crew_config["context"] = json.dumps(kwargs["context"])
|
|
140
|
+
span_attributes["crewai.agent.config"] = json.dumps(crew_config)
|
|
141
|
+
elif instance.__class__.__name__ == "Task":
|
|
142
|
+
span_attributes["crewai.task.config"] = json.dumps(crew_config)
|
|
143
|
+
|
|
144
|
+
attributes = FrameworkSpanAttributes(**span_attributes)
|
|
145
|
+
|
|
146
|
+
with tracer.start_as_current_span(operation_name, kind=SpanKind.CLIENT) as span:
|
|
147
|
+
_set_input_attributes(span, kwargs, attributes)
|
|
148
|
+
|
|
149
|
+
try:
|
|
150
|
+
result = wrapped(*args, **kwargs)
|
|
151
|
+
if result:
|
|
152
|
+
span.set_status(Status(StatusCode.OK))
|
|
153
|
+
|
|
154
|
+
span.end()
|
|
155
|
+
return result
|
|
156
|
+
|
|
157
|
+
except Exception as err:
|
|
158
|
+
# Record the exception in the span
|
|
159
|
+
span.record_exception(err)
|
|
160
|
+
|
|
161
|
+
# Set the span status to indicate an error
|
|
162
|
+
span.set_status(Status(StatusCode.ERROR, str(err)))
|
|
163
|
+
|
|
164
|
+
# Reraise the exception to ensure it's not swallowed
|
|
165
|
+
raise
|
|
166
|
+
|
|
167
|
+
return traced_method
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
@silently_fail
|
|
171
|
+
def _set_input_attributes(span, kwargs, attributes):
|
|
172
|
+
for field, value in attributes.model_dump(by_alias=True).items():
|
|
173
|
+
set_span_attribute(span, field, value)
|
|
@@ -22,7 +22,7 @@ from importlib_metadata import version as v
|
|
|
22
22
|
from .patch import patch_bootstrapfewshot_optimizer, patch_signature, patch_evaluate
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
class
|
|
25
|
+
class DspyInstrumentation(BaseInstrumentor):
|
|
26
26
|
"""
|
|
27
27
|
The DspyInstrumentor class represents the DSPy instrumentation"""
|
|
28
28
|
|
|
@@ -37,24 +37,24 @@ def patch_bootstrapfewshot_optimizer(operation_name, version, tracer):
|
|
|
37
37
|
"signature": str(args[0].prog.signature) if args[0].prog.signature else None,
|
|
38
38
|
}
|
|
39
39
|
span_attributes["dspy.optimizer.module.prog"] = json.dumps(prog)
|
|
40
|
-
if instance.metric:
|
|
40
|
+
if "metric" in instance and instance.metric:
|
|
41
41
|
span_attributes["dspy.optimizer.metric"] = instance.metric.__name__
|
|
42
42
|
if kwargs.get("trainset") and len(kwargs.get("trainset")) > 0:
|
|
43
43
|
span_attributes["dspy.optimizer.trainset"] = str(kwargs.get("trainset"))
|
|
44
44
|
config = {}
|
|
45
|
-
if instance.metric_threshold:
|
|
45
|
+
if "metric_threshold" in instance and instance.metric_threshold:
|
|
46
46
|
config["metric_threshold"] = instance.metric_threshold
|
|
47
|
-
if instance.teacher_settings:
|
|
47
|
+
if "teacher_settings" in instance and instance.teacher_settings:
|
|
48
48
|
config["teacher_settings"] = instance.teacher_settings
|
|
49
|
-
if instance.max_bootstrapped_demos:
|
|
49
|
+
if "max_bootstrapped_demos" in instance and instance.max_bootstrapped_demos:
|
|
50
50
|
config["max_bootstrapped_demos"] = instance.max_bootstrapped_demos
|
|
51
|
-
if instance.max_labeled_demos:
|
|
51
|
+
if "max_labeled_demos" in instance and instance.max_labeled_demos:
|
|
52
52
|
config["max_labeled_demos"] = instance.max_labeled_demos
|
|
53
|
-
if instance.max_rounds:
|
|
53
|
+
if "max_rounds" in instance and instance.max_rounds:
|
|
54
54
|
config["max_rounds"] = instance.max_rounds
|
|
55
|
-
if instance.max_errors:
|
|
55
|
+
if "max_errors" in instance and instance.max_errors:
|
|
56
56
|
config["max_errors"] = instance.max_errors
|
|
57
|
-
if instance.error_count:
|
|
57
|
+
if "error_count" in instance and instance.error_count:
|
|
58
58
|
config["error_count"] = instance.error_count
|
|
59
59
|
if config and len(config) > 0:
|
|
60
60
|
span_attributes["dspy.optimizer.config"] = json.dumps(config)
|
|
@@ -149,25 +149,25 @@ def patch_evaluate(operation_name, version, tracer):
|
|
|
149
149
|
**(extra_attributes if extra_attributes is not None else {}),
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
if instance.devset is not None:
|
|
152
|
+
if "devset" in instance and instance.devset is not None:
|
|
153
153
|
span_attributes["dspy.evaluate.devset"] = str(instance.devset)
|
|
154
|
-
if instance.display is not None:
|
|
154
|
+
if "display" in instance and instance.display is not None:
|
|
155
155
|
span_attributes["dspy.evaluate.display"] = str(instance.display)
|
|
156
|
-
if instance.num_threads is not None:
|
|
156
|
+
if "num_threads" in instance and instance.num_threads is not None:
|
|
157
157
|
span_attributes["dspy.evaluate.num_threads"] = str(instance.num_threads)
|
|
158
|
-
if instance.return_outputs is not None:
|
|
158
|
+
if "return_outputs" in instance and instance.return_outputs is not None:
|
|
159
159
|
span_attributes["dspy.evaluate.return_outputs"] = str(instance.return_outputs)
|
|
160
|
-
if instance.display_table is not None:
|
|
160
|
+
if "display_table" in instance and instance.display_table is not None:
|
|
161
161
|
span_attributes["dspy.evaluate.display_table"] = str(instance.display_table)
|
|
162
|
-
if instance.display_progress is not None:
|
|
162
|
+
if "display_progress" in instance and instance.display_progress is not None:
|
|
163
163
|
span_attributes["dspy.evaluate.display_progress"] = str(instance.display_progress)
|
|
164
|
-
if instance.metric is not None:
|
|
164
|
+
if "metric" in instance and instance.metric is not None:
|
|
165
165
|
span_attributes["dspy.evaluate.metric"] = instance.metric.__name__
|
|
166
|
-
if instance.error_count is not None:
|
|
166
|
+
if "error_count" in instance and instance.error_count is not None:
|
|
167
167
|
span_attributes["dspy.evaluate.error_count"] = str(instance.error_count)
|
|
168
|
-
if instance.error_lock is not None:
|
|
168
|
+
if "error_lock" in instance and instance.error_lock is not None:
|
|
169
169
|
span_attributes["dspy.evaluate.error_lock"] = str(instance.error_lock)
|
|
170
|
-
if instance.max_errors is not None:
|
|
170
|
+
if "max_errors" in instance and instance.max_errors is not None:
|
|
171
171
|
span_attributes["dspy.evaluate.max_errors"] = str(instance.max_errors)
|
|
172
172
|
if args and len(args) > 0:
|
|
173
173
|
span_attributes["dspy.evaluate.args"] = str(args)
|