langtrace-python-sdk 2.3.4__py3-none-any.whl → 2.3.7__py3-none-any.whl
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.
- examples/azureopenai_example/__init__.py +9 -0
- examples/azureopenai_example/completion.py +22 -0
- examples/langchain_example/__init__.py +2 -0
- examples/langchain_example/langgraph_example_tools.py +151 -0
- langtrace_python_sdk/instrumentation/anthropic/patch.py +15 -9
- langtrace_python_sdk/instrumentation/anthropic/types.py +0 -1
- langtrace_python_sdk/instrumentation/weaviate/patch.py +5 -2
- langtrace_python_sdk/utils/llm.py +1 -1
- langtrace_python_sdk/version.py +1 -1
- {langtrace_python_sdk-2.3.4.dist-info → langtrace_python_sdk-2.3.7.dist-info}/METADATA +1 -1
- {langtrace_python_sdk-2.3.4.dist-info → langtrace_python_sdk-2.3.7.dist-info}/RECORD +15 -12
- tests/anthropic/test_anthropic.py +1 -0
- {langtrace_python_sdk-2.3.4.dist-info → langtrace_python_sdk-2.3.7.dist-info}/WHEEL +0 -0
- {langtrace_python_sdk-2.3.4.dist-info → langtrace_python_sdk-2.3.7.dist-info}/entry_points.txt +0 -0
- {langtrace_python_sdk-2.3.4.dist-info → langtrace_python_sdk-2.3.7.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from examples.azureopenai_example.completion import chat_completion
|
|
2
|
+
from langtrace_python_sdk import with_langtrace_root_span, langtrace
|
|
3
|
+
|
|
4
|
+
langtrace.init()
|
|
5
|
+
|
|
6
|
+
class AzureOpenAIRunner:
|
|
7
|
+
@with_langtrace_root_span("AzureOpenAI")
|
|
8
|
+
def run(self):
|
|
9
|
+
chat_completion()
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import os
|
|
2
|
+
from langchain_openai import AzureChatOpenAI
|
|
3
|
+
|
|
4
|
+
from langtrace_python_sdk.utils.with_root_span import with_langtrace_root_span
|
|
5
|
+
|
|
6
|
+
model = AzureChatOpenAI(
|
|
7
|
+
azure_endpoint=os.environ['AZURE_OPENAI_ENDPOINT'],
|
|
8
|
+
azure_deployment=os.environ['AZURE_OPENAI_DEPLOYMENT_NAME'],
|
|
9
|
+
openai_api_version=os.environ['AZURE_OPENAI_API_VERSION'],
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
@with_langtrace_root_span()
|
|
13
|
+
def chat_completion():
|
|
14
|
+
messages = [
|
|
15
|
+
(
|
|
16
|
+
"system",
|
|
17
|
+
"You are a helpful assistant that translates English to French. Translate the user sentence.",
|
|
18
|
+
),
|
|
19
|
+
("human", "I love programming."),
|
|
20
|
+
]
|
|
21
|
+
result = model.invoke(messages)
|
|
22
|
+
print(result)
|
|
@@ -2,6 +2,7 @@ from .basic import basic_app, rag, load_and_split
|
|
|
2
2
|
from langtrace_python_sdk import with_langtrace_root_span
|
|
3
3
|
|
|
4
4
|
from .groq_example import groq_basic, groq_streaming
|
|
5
|
+
from .langgraph_example_tools import basic_graph_tools
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
class LangChainRunner:
|
|
@@ -10,6 +11,7 @@ class LangChainRunner:
|
|
|
10
11
|
basic_app()
|
|
11
12
|
rag()
|
|
12
13
|
load_and_split()
|
|
14
|
+
basic_graph_tools()
|
|
13
15
|
|
|
14
16
|
|
|
15
17
|
class GroqRunner:
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
from typing import Annotated
|
|
2
|
+
|
|
3
|
+
from langchain_anthropic import ChatAnthropic
|
|
4
|
+
from langchain_core.messages import HumanMessage
|
|
5
|
+
from langchain_core.pydantic_v1 import BaseModel
|
|
6
|
+
from typing_extensions import TypedDict
|
|
7
|
+
from langchain_core.pydantic_v1 import BaseModel, Field
|
|
8
|
+
from langchain_core.tools import Tool
|
|
9
|
+
from langgraph.checkpoint.memory import MemorySaver
|
|
10
|
+
from langgraph.graph import StateGraph
|
|
11
|
+
from langgraph.graph.message import add_messages
|
|
12
|
+
from langgraph.prebuilt import ToolNode, tools_condition
|
|
13
|
+
from langchain_core.messages import AIMessage, ToolMessage
|
|
14
|
+
|
|
15
|
+
from langtrace_python_sdk import langtrace
|
|
16
|
+
|
|
17
|
+
langtrace.init()
|
|
18
|
+
|
|
19
|
+
primes = {998: 7901, 999: 7907, 1000: 7919}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class PrimeInput(BaseModel):
|
|
23
|
+
n: int = Field()
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def is_prime(n: int) -> bool:
|
|
27
|
+
if n <= 1 or (n % 2 == 0 and n > 2):
|
|
28
|
+
return False
|
|
29
|
+
for i in range(3, int(n**0.5) + 1, 2):
|
|
30
|
+
if n % i == 0:
|
|
31
|
+
return False
|
|
32
|
+
return True
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def get_prime(n: int, primes: dict = primes) -> str:
|
|
36
|
+
return str(primes.get(int(n)))
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
async def aget_prime(n: int, primes: dict = primes) -> str:
|
|
40
|
+
return str(primes.get(int(n)))
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class State(TypedDict):
|
|
44
|
+
messages: Annotated[list, add_messages]
|
|
45
|
+
# This flag is new
|
|
46
|
+
ask_human: bool
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class RequestAssistance(BaseModel):
|
|
50
|
+
"""Escalate the conversation to an expert. Use this if you are unable to assist directly or if the user requires support beyond your permissions.
|
|
51
|
+
|
|
52
|
+
To use this function, relay the user's 'request' so the expert can provide the right guidance.
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
request: str
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
llm = ChatAnthropic(model="claude-3-haiku-20240307")
|
|
59
|
+
# We can bind the llm to a tool definition, a pydantic model, or a json schema
|
|
60
|
+
llm_with_tools = llm.bind_tools([RequestAssistance])
|
|
61
|
+
tools = [
|
|
62
|
+
Tool(
|
|
63
|
+
name="GetPrime",
|
|
64
|
+
func=get_prime,
|
|
65
|
+
description="A tool that returns the `n`th prime number",
|
|
66
|
+
args_schema=PrimeInput,
|
|
67
|
+
coroutine=aget_prime,
|
|
68
|
+
),
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def chatbot(state: State):
|
|
73
|
+
response = llm_with_tools.invoke(state["messages"])
|
|
74
|
+
ask_human = False
|
|
75
|
+
if (
|
|
76
|
+
response.tool_calls
|
|
77
|
+
and response.tool_calls[0]["name"] == RequestAssistance.__name__
|
|
78
|
+
):
|
|
79
|
+
ask_human = True
|
|
80
|
+
return {"messages": [response], "ask_human": ask_human}
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
graph_builder = StateGraph(State)
|
|
84
|
+
|
|
85
|
+
graph_builder.add_node("chatbot", chatbot)
|
|
86
|
+
graph_builder.add_node("tools", ToolNode(tools=tools))
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
def create_response(response: str, ai_message: AIMessage):
|
|
90
|
+
return ToolMessage(
|
|
91
|
+
content=response,
|
|
92
|
+
tool_call_id=ai_message.tool_calls[0]["id"],
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def human_node(state: State):
|
|
97
|
+
new_messages = []
|
|
98
|
+
if not isinstance(state["messages"][-1], ToolMessage):
|
|
99
|
+
# Typically, the user will have updated the state during the interrupt.
|
|
100
|
+
# If they choose not to, we will include a placeholder ToolMessage to
|
|
101
|
+
# let the LLM continue.
|
|
102
|
+
new_messages.append(
|
|
103
|
+
create_response("No response from human.", state["messages"][-1])
|
|
104
|
+
)
|
|
105
|
+
return {
|
|
106
|
+
# Append the new messages
|
|
107
|
+
"messages": new_messages,
|
|
108
|
+
# Unset the flag
|
|
109
|
+
"ask_human": False,
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def select_next_node(state: State):
|
|
114
|
+
if state["ask_human"]:
|
|
115
|
+
return "human"
|
|
116
|
+
# Otherwise, we can route as before
|
|
117
|
+
return tools_condition(state)
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def basic_graph_tools():
|
|
121
|
+
graph_builder.add_node("human", human_node)
|
|
122
|
+
graph_builder.add_conditional_edges(
|
|
123
|
+
"chatbot",
|
|
124
|
+
select_next_node,
|
|
125
|
+
{"human": "human", "tools": "tools", "__end__": "__end__"},
|
|
126
|
+
)
|
|
127
|
+
graph_builder.add_edge("tools", "chatbot")
|
|
128
|
+
graph_builder.add_edge("human", "chatbot")
|
|
129
|
+
graph_builder.set_entry_point("chatbot")
|
|
130
|
+
memory = MemorySaver()
|
|
131
|
+
graph = graph_builder.compile(
|
|
132
|
+
checkpointer=memory,
|
|
133
|
+
interrupt_before=["human"],
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
config = {"configurable": {"thread_id": "1"}}
|
|
137
|
+
events = graph.stream(
|
|
138
|
+
{
|
|
139
|
+
"messages": [
|
|
140
|
+
(
|
|
141
|
+
"user",
|
|
142
|
+
"I'm learning LangGraph. Could you do some research on it for me?",
|
|
143
|
+
)
|
|
144
|
+
]
|
|
145
|
+
},
|
|
146
|
+
config,
|
|
147
|
+
stream_mode="values",
|
|
148
|
+
)
|
|
149
|
+
for event in events:
|
|
150
|
+
if "messages" in event:
|
|
151
|
+
event["messages"][-1]
|
|
@@ -18,6 +18,7 @@ from typing import Any, Callable, Dict, List, Optional, Iterator, TypedDict, Uni
|
|
|
18
18
|
from langtrace.trace_attributes import Event, SpanAttributes, LLMSpanAttributes
|
|
19
19
|
from langtrace_python_sdk.utils import set_span_attribute
|
|
20
20
|
from langtrace_python_sdk.utils.silently_fail import silently_fail
|
|
21
|
+
import json
|
|
21
22
|
|
|
22
23
|
from langtrace_python_sdk.utils.llm import (
|
|
23
24
|
StreamWrapper,
|
|
@@ -99,15 +100,20 @@ def messages_create(version: str, tracer: Tracer) -> Callable[..., Any]:
|
|
|
99
100
|
set_span_attribute(
|
|
100
101
|
span, SpanAttributes.LLM_RESPONSE_MODEL, result.model
|
|
101
102
|
)
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
103
|
+
if hasattr(result, "content") and result.content[0] is not None:
|
|
104
|
+
content = result.content[0]
|
|
105
|
+
typ = content.type
|
|
106
|
+
role = result.role if result.role else "assistant"
|
|
107
|
+
if typ == "tool_result" or typ == "tool_use":
|
|
108
|
+
content = content.json() # type: ignore
|
|
109
|
+
set_span_attribute(
|
|
110
|
+
span, SpanAttributes.LLM_TOOL_RESULTS, json.dumps(content)
|
|
111
|
+
)
|
|
112
|
+
if typ == "text":
|
|
113
|
+
content = result.content[0].text
|
|
114
|
+
set_event_completion(
|
|
115
|
+
span, [{"type": typ, role: role, content: content}]
|
|
116
|
+
)
|
|
111
117
|
|
|
112
118
|
if (
|
|
113
119
|
hasattr(result, "system_fingerprint")
|
|
@@ -47,9 +47,12 @@ METADATA_ATTRIBUTES = [
|
|
|
47
47
|
|
|
48
48
|
def extract_inputs(args, kwargs):
|
|
49
49
|
extracted_params = {}
|
|
50
|
-
kwargs_without_properties = {
|
|
50
|
+
kwargs_without_properties = {
|
|
51
|
+
k: v for k, v in kwargs.items() if k not in ["properties", "fusion_type"]
|
|
52
|
+
}
|
|
51
53
|
extracted_params.update(extract_input_params(args, kwargs_without_properties))
|
|
52
|
-
|
|
54
|
+
if kwargs.get("fusion_type", None):
|
|
55
|
+
extracted_params["fusion_type"] = kwargs["fusion_type"].value
|
|
53
56
|
if kwargs.get("properties", None):
|
|
54
57
|
extracted_params["properties"] = []
|
|
55
58
|
for each_prop in kwargs.get("properties"):
|
|
@@ -126,7 +126,7 @@ def get_llm_request_attributes(kwargs, prompts=None, model=None, operation_name=
|
|
|
126
126
|
tools = kwargs.get("tools", None)
|
|
127
127
|
return {
|
|
128
128
|
SpanAttributes.LLM_OPERATION_NAME: operation_name,
|
|
129
|
-
SpanAttributes.LLM_REQUEST_MODEL: model or kwargs.get("model"),
|
|
129
|
+
SpanAttributes.LLM_REQUEST_MODEL: model or kwargs.get("model") or "gpt-3.5-turbo",
|
|
130
130
|
SpanAttributes.LLM_IS_STREAMING: kwargs.get("stream"),
|
|
131
131
|
SpanAttributes.LLM_REQUEST_TEMPERATURE: kwargs.get("temperature"),
|
|
132
132
|
SpanAttributes.LLM_TOP_K: top_k,
|
langtrace_python_sdk/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "2.3.
|
|
1
|
+
__version__ = "2.3.7"
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
examples/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
2
2
|
examples/anthropic_example/__init__.py,sha256=03us1YuvAJR6fqXX8NH2kROBfTmyz7KzFVY01UlL-tM,237
|
|
3
3
|
examples/anthropic_example/completion.py,sha256=3_YEZrt0BLVNJT_RbLXg6JGP2bweuc_HPC2MWR73tOM,713
|
|
4
|
+
examples/azureopenai_example/__init__.py,sha256=PaZM90r6VN4eSOXxb6wGsyhf9-RJCNqBypzk1Xa2GJI,271
|
|
5
|
+
examples/azureopenai_example/completion.py,sha256=K_GeU0TfJ9lLDfW5VI0Lmm8_I0JXf1x9Qi83ImJ350c,668
|
|
4
6
|
examples/chroma_example/__init__.py,sha256=Mrf8KptW1hhzu6WDdRRTxbaB-0kM7x5u-Goc_zR7G5c,203
|
|
5
7
|
examples/chroma_example/basic.py,sha256=oO7-__8HptnFXLVKbnPgoz02yM-CAPi721xsbUb_gYg,868
|
|
6
8
|
examples/cohere_example/__init__.py,sha256=oYpsnS-dKOlWLkPEUWhXxi1vfxa77bt_DOdkJHg__7g,502
|
|
@@ -40,10 +42,11 @@ examples/gemini_example/function_tools.py,sha256=ZOBrdPy_8s3NDfsF5A4RXIoUi2VXlD8
|
|
|
40
42
|
examples/gemini_example/main.py,sha256=cTXqgOa6lEMwgX56uneM-1TbIY_QZtDRkByW5z0LpNk,2470
|
|
41
43
|
examples/hiveagent_example/basic.py,sha256=Sd7I5w8w5Xx7ODaydTY30yiq9HwJDMKHQywrZjgehP0,441
|
|
42
44
|
examples/inspect_ai_example/basic_eval.py,sha256=hDg2BB9ONNpOGRVH08HsghnS1373sOnq6dyDmUQd9gY,1040
|
|
43
|
-
examples/langchain_example/__init__.py,sha256=
|
|
45
|
+
examples/langchain_example/__init__.py,sha256=g0WO8zrKVSDc8XmMVFl3oYno7ihXtPuHu9yy_tY3JhY,493
|
|
44
46
|
examples/langchain_example/basic.py,sha256=hrwMHOUv78-su5DP9i5krkQnMGHq0svEXsBa40Jkggg,2981
|
|
45
47
|
examples/langchain_example/groq_example.py,sha256=egrg3FHCnSJ-kV22Z2_t9ElJfKilddfcO5bwcKCfc5M,1060
|
|
46
48
|
examples/langchain_example/langgraph_example.py,sha256=7C2a4Sg0PKbbab03CVkStO3MzT7C-O1UtdmObvBXurM,2005
|
|
49
|
+
examples/langchain_example/langgraph_example_tools.py,sha256=rFwgQYRngeyCz9PuBxnllp5t5PIHk8d-UDKwCQTgkxw,4208
|
|
47
50
|
examples/langchain_example/sagemaker.py,sha256=V-rTZRyaErHCuo3kfrrZD8AELHJVi3wF7n1YrixfF1s,2330
|
|
48
51
|
examples/langchain_example/tool.py,sha256=8T8_IDbgA58XbsfyH5_xhA8ZKQfyfyFxF8wor-PsRjA,2556
|
|
49
52
|
examples/litellm_example/basic.py,sha256=h71u1vMKdPlGJbC1DmK8PKIbaDj4I96-cx2hztboDic,2544
|
|
@@ -86,7 +89,7 @@ examples/weaviate_example/__init__.py,sha256=8JMDBsRSEV10HfTd-YC7xb4txBjD3la56sn
|
|
|
86
89
|
examples/weaviate_example/query_text.py,sha256=wPHQTc_58kPoKTZMygVjTj-2ZcdrIuaausJfMxNQnQc,127162
|
|
87
90
|
langtrace_python_sdk/__init__.py,sha256=VZM6i71NR7pBQK6XvJWRelknuTYUhqwqE7PlicKa5Wg,1166
|
|
88
91
|
langtrace_python_sdk/langtrace.py,sha256=rjIEwPd-Iq0mcSCh_3CEK-38kyJwazdR1CfDa_U4mfQ,8468
|
|
89
|
-
langtrace_python_sdk/version.py,sha256=
|
|
92
|
+
langtrace_python_sdk/version.py,sha256=6gWyqqtavdLEWlseY6lzF5O9sA3rYGOPizMXn2nrFRg,22
|
|
90
93
|
langtrace_python_sdk/constants/__init__.py,sha256=P8QvYwt5czUNDZsKS64vxm9Dc41ptGbuF1TFtAF6nv4,44
|
|
91
94
|
langtrace_python_sdk/constants/exporter/langtrace_exporter.py,sha256=5MNjnAOg-4am78J3gVMH6FSwq5N8TOj72ugkhsw4vi0,46
|
|
92
95
|
langtrace_python_sdk/constants/instrumentation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -110,8 +113,8 @@ langtrace_python_sdk/extensions/langtrace_filesystem.py,sha256=34fZutG28EJ66l67O
|
|
|
110
113
|
langtrace_python_sdk/instrumentation/__init__.py,sha256=bkyxh6lq_6dgCdbBseFQEbejRTLZv4s9nLBfNSqL6lk,1548
|
|
111
114
|
langtrace_python_sdk/instrumentation/anthropic/__init__.py,sha256=donrurJAGYlxrSRA3BIf76jGeUcAx9Tq8CVpah68S0Y,101
|
|
112
115
|
langtrace_python_sdk/instrumentation/anthropic/instrumentation.py,sha256=ndXdruI0BG7n75rsuEpKjfzePxrZxg40gZ39ONmD_v4,1845
|
|
113
|
-
langtrace_python_sdk/instrumentation/anthropic/patch.py,sha256=
|
|
114
|
-
langtrace_python_sdk/instrumentation/anthropic/types.py,sha256=
|
|
116
|
+
langtrace_python_sdk/instrumentation/anthropic/patch.py,sha256=LUv-nv94uPJprDj34LQNrhRDqweZZ26Cb9oVATBc2Yc,5230
|
|
117
|
+
langtrace_python_sdk/instrumentation/anthropic/types.py,sha256=WdeXe2tkjAisMLK38STKwVe7MJS5SLoETJ_aKhA_-UU,2463
|
|
115
118
|
langtrace_python_sdk/instrumentation/chroma/__init__.py,sha256=pNZ5UO8Q-d5VkXSobBf79reB6AmEl_usnnTp5Itv818,95
|
|
116
119
|
langtrace_python_sdk/instrumentation/chroma/instrumentation.py,sha256=nT6PS6bsrIOO9kLV5GuUeRjMe6THHHAZGvqWBP1dYog,1807
|
|
117
120
|
langtrace_python_sdk/instrumentation/chroma/patch.py,sha256=jYcqBeu-0cYA29PO880oXYRwYh-R1oseXmzfK6UDBps,9074
|
|
@@ -169,11 +172,11 @@ langtrace_python_sdk/instrumentation/vertexai/instrumentation.py,sha256=Keeb1D7n
|
|
|
169
172
|
langtrace_python_sdk/instrumentation/vertexai/patch.py,sha256=vPxwuSKgA3cUtelgot4XZEox8AD4ehsi3bNTKD_HS_M,4394
|
|
170
173
|
langtrace_python_sdk/instrumentation/weaviate/__init__.py,sha256=Mc-Je6evPo-kKQzerTG7bd1XO5JOh4YGTE3wBxaUBwg,99
|
|
171
174
|
langtrace_python_sdk/instrumentation/weaviate/instrumentation.py,sha256=bzPwtoQD0X6beLYXe6ZL7XRkyRkqdiqKiGc4gOlCQdU,2295
|
|
172
|
-
langtrace_python_sdk/instrumentation/weaviate/patch.py,sha256=
|
|
175
|
+
langtrace_python_sdk/instrumentation/weaviate/patch.py,sha256=3qxhJjEnu5lNb6_x0p82PaFBgXul-b0XTyTQV1JHzhw,6597
|
|
173
176
|
langtrace_python_sdk/types/__init__.py,sha256=MeGkmoy2OY3V21GErDIdlf_N8Aj7HDld5Tpbvq2PwTY,4104
|
|
174
177
|
langtrace_python_sdk/utils/__init__.py,sha256=giTHkvDOQdqFqXU4PoGP7DhA9tAteZN-KxX3mEUg6QQ,893
|
|
175
178
|
langtrace_python_sdk/utils/langtrace_sampler.py,sha256=BupNndHbU9IL_wGleKetz8FdcveqHMBVz1bfKTTW80w,1753
|
|
176
|
-
langtrace_python_sdk/utils/llm.py,sha256=
|
|
179
|
+
langtrace_python_sdk/utils/llm.py,sha256=k16jQL3wf1dYIDOcXSvHVfL0s97cu3QVLMmZmtTT3Gk,14741
|
|
177
180
|
langtrace_python_sdk/utils/misc.py,sha256=7PRJ45BwuwJ6fPAdy1OpBau8QERR2aWaVvzDvZ7JTkE,1729
|
|
178
181
|
langtrace_python_sdk/utils/prompt_registry.py,sha256=n5dQMVLBw8aJZY8Utvf67bncc25ELf6AH9BYw8_hSzo,2619
|
|
179
182
|
langtrace_python_sdk/utils/sdk_version_checker.py,sha256=FzjIWZjn53cX0LEVPdipQd1fO9lG8iGVUEVUs9Hyk6M,1713
|
|
@@ -184,7 +187,7 @@ tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
184
187
|
tests/conftest.py,sha256=0Jo6iCZTXbdvyJVhG9UpYGkLabL75378oauCzmt-Sa8,603
|
|
185
188
|
tests/utils.py,sha256=8ZBYvxBH6PynipT1sqenfyjTGLhEV7SORQH1NJjnpsM,2500
|
|
186
189
|
tests/anthropic/conftest.py,sha256=ht1zF3q4Xb1UiZ3BL_L-CQ3YWrd52Dqb4WTZ3f-GdG4,739
|
|
187
|
-
tests/anthropic/test_anthropic.py,sha256=
|
|
190
|
+
tests/anthropic/test_anthropic.py,sha256=ODeGDGSZCopR7QVA8Y-Vvv3wBLs-LOlQ58LneU-aTng,2864
|
|
188
191
|
tests/anthropic/cassettes/test_anthropic.yaml,sha256=z7YAqA_BBgI-hw7uyVMdLoIZdBYhKwl9cuTzUu9nAZs,2332
|
|
189
192
|
tests/anthropic/cassettes/test_anthropic_streaming.yaml,sha256=D0w4-6dfsgrhbNLJEj8gZBV0yXfrAfA9u90Yu8Ac-TY,11675
|
|
190
193
|
tests/anthropic/cassettes/test_async_anthropic_streaming.yaml,sha256=hQZPY2vwBaW3BWllLd0lcGQ73DjA8C3Ips1Hx9pA-ao,8373
|
|
@@ -222,8 +225,8 @@ tests/pinecone/cassettes/test_query.yaml,sha256=b5v9G3ssUy00oG63PlFUR3JErF2Js-5A
|
|
|
222
225
|
tests/pinecone/cassettes/test_upsert.yaml,sha256=neWmQ1v3d03V8WoLl8FoFeeCYImb8pxlJBWnFd_lITU,38607
|
|
223
226
|
tests/qdrant/conftest.py,sha256=9n0uHxxIjWk9fbYc4bx-uP8lSAgLBVx-cV9UjnsyCHM,381
|
|
224
227
|
tests/qdrant/test_qdrant.py,sha256=pzjAjVY2kmsmGfrI2Gs2xrolfuaNHz7l1fqGQCjp5_o,3353
|
|
225
|
-
langtrace_python_sdk-2.3.
|
|
226
|
-
langtrace_python_sdk-2.3.
|
|
227
|
-
langtrace_python_sdk-2.3.
|
|
228
|
-
langtrace_python_sdk-2.3.
|
|
229
|
-
langtrace_python_sdk-2.3.
|
|
228
|
+
langtrace_python_sdk-2.3.7.dist-info/METADATA,sha256=AncuNESTDY0FsWOisJnbDW5dF6FNs318HmNBN-g915I,15011
|
|
229
|
+
langtrace_python_sdk-2.3.7.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
|
230
|
+
langtrace_python_sdk-2.3.7.dist-info/entry_points.txt,sha256=1_b9-qvf2fE7uQNZcbUei9vLpFZBbbh9LrtGw95ssAo,70
|
|
231
|
+
langtrace_python_sdk-2.3.7.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
232
|
+
langtrace_python_sdk-2.3.7.dist-info/RECORD,,
|
|
File without changes
|
{langtrace_python_sdk-2.3.4.dist-info → langtrace_python_sdk-2.3.7.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{langtrace_python_sdk-2.3.4.dist-info → langtrace_python_sdk-2.3.7.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|