langtrace-python-sdk 1.2.25__tar.gz → 1.3.2__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.
Files changed (90) hide show
  1. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/PKG-INFO +4 -2
  2. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/README.md +2 -1
  3. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/pyproject.toml +2 -1
  4. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/examples/anthropic_example/completion.py +1 -1
  5. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/examples/chroma_example/basic.py +1 -1
  6. langtrace_python_sdk-1.3.2/src/examples/cohere_example/chat.py +26 -0
  7. langtrace_python_sdk-1.3.2/src/examples/cohere_example/chat_stream.py +24 -0
  8. langtrace_python_sdk-1.3.2/src/examples/cohere_example/embed_create.py +22 -0
  9. langtrace_python_sdk-1.3.2/src/examples/fastapi_example/basic_route.py +40 -0
  10. langtrace_python_sdk-1.3.2/src/examples/hiveagent_example/basic.py +23 -0
  11. langtrace_python_sdk-1.3.2/src/examples/llamaindex_example/agent.py +86 -0
  12. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/examples/llamaindex_example/basic.py +1 -1
  13. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/examples/openai/chat_completion.py +1 -1
  14. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/examples/openai/function_calling.py +1 -1
  15. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/examples/perplexity_example/basic.py +5 -3
  16. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/examples/pinecone_example/basic.py +1 -1
  17. langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/constants/instrumentation/cohere.py +17 -0
  18. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/constants/instrumentation/common.py +1 -0
  19. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/extensions/langtrace_exporter.py +10 -2
  20. langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/instrumentation/cohere/instrumentation.py +53 -0
  21. langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/instrumentation/cohere/patch.py +397 -0
  22. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/instrumentation/llamaindex/instrumentation.py +19 -1
  23. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/instrumentation/llamaindex/patch.py +46 -2
  24. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/instrumentation/openai/instrumentation.py +25 -0
  25. langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/instrumentation/openai/patch.py +749 -0
  26. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/langtrace.py +15 -7
  27. langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/utils/__init__.py +0 -0
  28. langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/version.py +1 -0
  29. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/run_example.py +12 -3
  30. langtrace_python_sdk-1.3.2/src/tests/__init__.py +0 -0
  31. langtrace_python_sdk-1.2.25/src/langtrace_python_sdk/instrumentation/openai/patch.py +0 -370
  32. langtrace_python_sdk-1.2.25/src/langtrace_python_sdk/version.py +0 -1
  33. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/.gitignore +0 -0
  34. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/LICENSE +0 -0
  35. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/__init__.py +0 -0
  36. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/examples/__init__.py +0 -0
  37. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/examples/anthropic_example/__init__.py +0 -0
  38. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/examples/chroma_example/__init__.py +0 -0
  39. {langtrace_python_sdk-1.2.25/src/examples/langchain_example → langtrace_python_sdk-1.3.2/src/examples/cohere_example}/__init__.py +0 -0
  40. {langtrace_python_sdk-1.2.25/src/examples/llamaindex_example → langtrace_python_sdk-1.3.2/src/examples/langchain_example}/__init__.py +0 -0
  41. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/examples/langchain_example/basic.py +0 -0
  42. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/examples/langchain_example/tool.py +0 -0
  43. {langtrace_python_sdk-1.2.25/src/examples/openai → langtrace_python_sdk-1.3.2/src/examples/llamaindex_example}/__init__.py +0 -0
  44. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/examples/llamaindex_example/data/abramov.txt +0 -0
  45. {langtrace_python_sdk-1.2.25/src/examples/pinecone_example → langtrace_python_sdk-1.3.2/src/examples/openai}/__init__.py +0 -0
  46. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/examples/openai/embeddings_create.py +0 -0
  47. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/examples/openai/images_generate.py +0 -0
  48. {langtrace_python_sdk-1.2.25/src/langtrace_python_sdk/constants → langtrace_python_sdk-1.3.2/src/examples/pinecone_example}/__init__.py +0 -0
  49. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/__init__.py +0 -0
  50. {langtrace_python_sdk-1.2.25/src/langtrace_python_sdk/constants/instrumentation → langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/constants}/__init__.py +0 -0
  51. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/constants/exporter/langtrace_exporter.py +0 -0
  52. {langtrace_python_sdk-1.2.25/src/langtrace_python_sdk/extensions → langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/constants/instrumentation}/__init__.py +0 -0
  53. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/constants/instrumentation/anthropic.py +0 -0
  54. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/constants/instrumentation/chroma.py +0 -0
  55. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/constants/instrumentation/openai.py +0 -0
  56. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/constants/instrumentation/pinecone.py +0 -0
  57. {langtrace_python_sdk-1.2.25/src/langtrace_python_sdk/instrumentation → langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/extensions}/__init__.py +0 -0
  58. {langtrace_python_sdk-1.2.25/src/langtrace_python_sdk/instrumentation/anthropic → langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/instrumentation}/__init__.py +0 -0
  59. {langtrace_python_sdk-1.2.25/src/langtrace_python_sdk/instrumentation/chroma → langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/instrumentation/anthropic}/__init__.py +0 -0
  60. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/instrumentation/anthropic/instrumentation.py +0 -0
  61. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/instrumentation/anthropic/patch.py +0 -0
  62. {langtrace_python_sdk-1.2.25/src/langtrace_python_sdk/instrumentation/langchain → langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/instrumentation/chroma}/__init__.py +0 -0
  63. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/instrumentation/chroma/instrumentation.py +0 -0
  64. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/instrumentation/chroma/patch.py +0 -0
  65. {langtrace_python_sdk-1.2.25/src/langtrace_python_sdk/instrumentation/langchain_community → langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/instrumentation/cohere}/__init__.py +0 -0
  66. {langtrace_python_sdk-1.2.25/src/langtrace_python_sdk/instrumentation/langchain_core → langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/instrumentation/langchain}/__init__.py +0 -0
  67. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/instrumentation/langchain/instrumentation.py +0 -0
  68. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/instrumentation/langchain/patch.py +0 -0
  69. {langtrace_python_sdk-1.2.25/src/langtrace_python_sdk/instrumentation/llamaindex → langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/instrumentation/langchain_community}/__init__.py +0 -0
  70. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/instrumentation/langchain_community/instrumentation.py +0 -0
  71. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/instrumentation/langchain_community/patch.py +0 -0
  72. {langtrace_python_sdk-1.2.25/src/langtrace_python_sdk/instrumentation/openai → langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/instrumentation/langchain_core}/__init__.py +0 -0
  73. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/instrumentation/langchain_core/instrumentation.py +0 -0
  74. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/instrumentation/langchain_core/patch.py +0 -0
  75. {langtrace_python_sdk-1.2.25/src/langtrace_python_sdk/instrumentation/pinecone → langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/instrumentation/llamaindex}/__init__.py +0 -0
  76. {langtrace_python_sdk-1.2.25/src/langtrace_python_sdk/utils → langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/instrumentation/openai}/__init__.py +0 -0
  77. {langtrace_python_sdk-1.2.25/src/tests → langtrace_python_sdk-1.3.2/src/langtrace_python_sdk/instrumentation/pinecone}/__init__.py +0 -0
  78. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/instrumentation/pinecone/instrumentation.py +0 -0
  79. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/instrumentation/pinecone/patch.py +0 -0
  80. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/utils/llm.py +0 -0
  81. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/langtrace_python_sdk/utils/with_root_span.py +0 -0
  82. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/tests/anthropic/test_anthropic.py +0 -0
  83. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/tests/chroma/test_chroma.py +0 -0
  84. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/tests/langchain/test_langchain.py +0 -0
  85. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/tests/langchain/test_langchain_community.py +0 -0
  86. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/tests/langchain/test_langchain_core.py +0 -0
  87. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/tests/openai/test_chat_completion.py +0 -0
  88. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/tests/openai/test_image_generation.py +0 -0
  89. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/tests/pinecone/test_pinecone.py +0 -0
  90. {langtrace_python_sdk-1.2.25 → langtrace_python_sdk-1.3.2}/src/tests/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: langtrace-python-sdk
3
- Version: 1.2.25
3
+ Version: 1.3.2
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>
@@ -19,6 +19,7 @@ Requires-Dist: trace-attributes
19
19
  Provides-Extra: dev
20
20
  Requires-Dist: anthropic; extra == 'dev'
21
21
  Requires-Dist: chromadb; extra == 'dev'
22
+ Requires-Dist: cohere; extra == 'dev'
22
23
  Requires-Dist: langchain; extra == 'dev'
23
24
  Requires-Dist: langchain-openai; extra == 'dev'
24
25
  Requires-Dist: llama-index; extra == 'dev'
@@ -144,7 +145,7 @@ pip install langtrace-python-sdk
144
145
 
145
146
  ``` python
146
147
  from langtrace_python_sdk import langtrace # Must precede any llm module imports
147
- langtrace.init(write_to_langtrace_cloud=False, batch=False)
148
+ langtrace.init(write_to_langtrace_cloud=False)
148
149
  ```
149
150
 
150
151
  ## Langtrace self hosted custom exporter
@@ -220,6 +221,7 @@ Langtrace automatically captures traces from the following vendors:
220
221
  | ------ | ------ | ------ | ------ |
221
222
  | OpenAI | LLM | :white_check_mark: | :white_check_mark: |
222
223
  | Anthropic | LLM | :white_check_mark: | :white_check_mark: |
224
+ | Cohere | LLM | :x: | :white_check_mark: |
223
225
  | Azure OpenAI | LLM | :white_check_mark: | :white_check_mark: |
224
226
  | Langchain | Framework | :x: | :white_check_mark: |
225
227
  | LlamaIndex | Framework | :white_check_mark: | :white_check_mark: |
@@ -116,7 +116,7 @@ pip install langtrace-python-sdk
116
116
 
117
117
  ``` python
118
118
  from langtrace_python_sdk import langtrace # Must precede any llm module imports
119
- langtrace.init(write_to_langtrace_cloud=False, batch=False)
119
+ langtrace.init(write_to_langtrace_cloud=False)
120
120
  ```
121
121
 
122
122
  ## Langtrace self hosted custom exporter
@@ -192,6 +192,7 @@ Langtrace automatically captures traces from the following vendors:
192
192
  | ------ | ------ | ------ | ------ |
193
193
  | OpenAI | LLM | :white_check_mark: | :white_check_mark: |
194
194
  | Anthropic | LLM | :white_check_mark: | :white_check_mark: |
195
+ | Cohere | LLM | :x: | :white_check_mark: |
195
196
  | Azure OpenAI | LLM | :white_check_mark: | :white_check_mark: |
196
197
  | Langchain | Framework | :x: | :white_check_mark: |
197
198
  | LlamaIndex | Framework | :white_check_mark: | :white_check_mark: |
@@ -37,7 +37,8 @@ dev = [
37
37
  "langchain-openai",
38
38
  "llama-index",
39
39
  "langchain-openai",
40
- "chromadb"
40
+ "chromadb",
41
+ "cohere"
41
42
  ]
42
43
 
43
44
 
@@ -8,7 +8,7 @@ from langtrace_python_sdk import with_langtrace_root_span
8
8
 
9
9
  _ = load_dotenv(find_dotenv())
10
10
 
11
- langtrace.init(batch=False, debug_log_to_console=True, write_to_langtrace_cloud=False)
11
+ langtrace.init(write_to_langtrace_cloud=False)
12
12
 
13
13
  @with_langtrace_root_span("messages_create")
14
14
  def messages_create():
@@ -7,7 +7,7 @@ from langtrace_python_sdk.utils.with_root_span import with_langtrace_root_span
7
7
 
8
8
  _ = load_dotenv(find_dotenv())
9
9
 
10
- langtrace.init(batch=False, debug_log_to_console=True, write_to_langtrace_cloud=False)
10
+ langtrace.init(write_to_langtrace_cloud=False)
11
11
 
12
12
 
13
13
  @with_langtrace_root_span()
@@ -0,0 +1,26 @@
1
+ from dotenv import find_dotenv, load_dotenv
2
+ import cohere
3
+
4
+ from langtrace_python_sdk import langtrace
5
+ # from langtrace_python_sdk.utils.with_root_span import with_langtrace_root_span
6
+
7
+ _ = load_dotenv(find_dotenv())
8
+
9
+ langtrace.init(write_to_langtrace_cloud=False)
10
+
11
+ co = cohere.Client()
12
+
13
+
14
+ # @with_langtrace_root_span("chat_create")
15
+ def chat_comp():
16
+ response = co.chat(
17
+ chat_history=[
18
+ {"role": "USER", "message": "Who discovered gravity?"},
19
+ {"role": "CHATBOT", "message": "The man who is widely credited with discovering gravity is Sir Isaac Newton"}
20
+ ],
21
+ message="What is today's news?",
22
+ # preamble="answer like yoda",
23
+ # perform web search before answering the question. You can also use your own custom connector.
24
+ # connectors=[{"id": "web-search"}]
25
+ )
26
+ print(response)
@@ -0,0 +1,24 @@
1
+ from dotenv import find_dotenv, load_dotenv
2
+ import cohere
3
+
4
+ from langtrace_python_sdk import langtrace
5
+
6
+ # from langtrace_python_sdk.utils.with_root_span import with_langtrace_root_span
7
+
8
+ _ = load_dotenv(find_dotenv())
9
+
10
+ langtrace.init(write_to_langtrace_cloud=False)
11
+
12
+ co = cohere.Client()
13
+
14
+
15
+ # @with_langtrace_root_span("chat_stream")
16
+ def chat_stream():
17
+ result = []
18
+ for event in co.chat_stream(message="Tell me a short story in 2 lines"):
19
+ if event.event_type == "text-generation":
20
+ result.append(event.text)
21
+ elif event.event_type == "stream-end":
22
+ break
23
+ print("".join(result))
24
+ return result
@@ -0,0 +1,22 @@
1
+ from dotenv import find_dotenv, load_dotenv
2
+ import cohere
3
+
4
+ from langtrace_python_sdk import langtrace
5
+
6
+ # from langtrace_python_sdk.utils.with_root_span import with_langtrace_root_span
7
+
8
+ _ = load_dotenv(find_dotenv())
9
+
10
+ langtrace.init(write_to_langtrace_cloud=False)
11
+
12
+ co = cohere.Client()
13
+
14
+
15
+ # @with_langtrace_root_span("embed_create")
16
+ def embed_create():
17
+ response = co.embed(
18
+ texts=["hello", "goodbye"],
19
+ model="embed-english-v3.0",
20
+ input_type="classification",
21
+ )
22
+ # print(response)
@@ -0,0 +1,40 @@
1
+ from fastapi import FastAPI
2
+ from langchain_community.vectorstores.faiss import FAISS
3
+ from langchain_core.output_parsers import StrOutputParser
4
+ from langchain_core.prompts.chat import ChatPromptTemplate
5
+ from langchain_core.runnables import RunnablePassthrough
6
+ from langchain_openai import ChatOpenAI, OpenAIEmbeddings
7
+ from openai import OpenAI
8
+
9
+ from langtrace_python_sdk import langtrace
10
+
11
+ langtrace.init(write_to_langtrace_cloud=False)
12
+ app = FastAPI()
13
+ client = OpenAI()
14
+
15
+
16
+ @app.get("/")
17
+ def root():
18
+ vectorstore = FAISS.from_texts(
19
+ ["Langtrace helps you ship high quality AI Apps to production."],
20
+ embedding=OpenAIEmbeddings(),
21
+ )
22
+ retriever = vectorstore.as_retriever()
23
+
24
+ template = """Answer the question based only on the following context:{context}
25
+
26
+ Question: {question}
27
+ """
28
+ prompt = ChatPromptTemplate.from_template(template)
29
+
30
+ model = ChatOpenAI()
31
+
32
+ chain = (
33
+ {"context": retriever, "question": RunnablePassthrough()}
34
+ | prompt
35
+ | model
36
+ | StrOutputParser()
37
+ )
38
+
39
+ res = chain.invoke("How is Langtrace useful?")
40
+ return {"response": res}
@@ -0,0 +1,23 @@
1
+ from langtrace_python_sdk import langtrace
2
+ from hive_agent import HiveAgent
3
+ from dotenv import load_dotenv
4
+ from openai import OpenAI
5
+
6
+ load_dotenv()
7
+
8
+ langtrace.init(
9
+ write_to_langtrace_cloud=False,
10
+ api_host="http://localhost:3000",
11
+ )
12
+
13
+ client = OpenAI()
14
+
15
+
16
+ def basic():
17
+ my_agent = HiveAgent(
18
+ name="my_agent",
19
+ functions=[],
20
+ instruction="your instructions for this agent's goal",
21
+ )
22
+
23
+ my_agent.run_server()
@@ -0,0 +1,86 @@
1
+ import json
2
+ from typing import Sequence, List
3
+
4
+ from llama_index.agent.openai import OpenAIAgent
5
+ from llama_index.llms.openai import OpenAI
6
+ from llama_index.core.llms import ChatMessage
7
+ from llama_index.core.tools import BaseTool, FunctionTool
8
+ from openai.types.chat import ChatCompletionMessageToolCall
9
+ from langtrace_python_sdk import langtrace
10
+
11
+ import nest_asyncio
12
+
13
+ nest_asyncio.apply()
14
+
15
+ langtrace.init(write_to_langtrace_cloud=False)
16
+
17
+
18
+ def multiply(a: int, b: int) -> int:
19
+ """Multiple two integers and returns the result integer"""
20
+ return a * b
21
+
22
+
23
+ multiply_tool = FunctionTool.from_defaults(fn=multiply)
24
+
25
+
26
+ def add(a: int, b: int) -> int:
27
+ """Add two integers and returns the result integer"""
28
+ return a + b
29
+
30
+
31
+ add_tool = FunctionTool.from_defaults(fn=add)
32
+
33
+
34
+ class YourOpenAIAgent:
35
+ def __init__(
36
+ self,
37
+ tools: Sequence[BaseTool] = [],
38
+ llm: OpenAI = OpenAI(temperature=0, model="gpt-3.5-turbo-0613"),
39
+ chat_history: List[ChatMessage] = [],
40
+ ) -> None:
41
+ self._llm = llm
42
+ self._tools = {tool.metadata.name: tool for tool in tools}
43
+ self._chat_history = chat_history
44
+
45
+ def reset(self) -> None:
46
+ self._chat_history = []
47
+
48
+ def chat(self, message: str) -> str:
49
+ chat_history = self._chat_history
50
+ chat_history.append(ChatMessage(role="user", content=message))
51
+ tools = [tool.metadata.to_openai_tool() for _, tool in self._tools.items()]
52
+
53
+ ai_message = self._llm.chat(chat_history, tools=tools).message
54
+ additional_kwargs = ai_message.additional_kwargs
55
+ chat_history.append(ai_message)
56
+
57
+ tool_calls = additional_kwargs.get("tool_calls", None)
58
+ # parallel function calling is now supported
59
+ if tool_calls is not None:
60
+ for tool_call in tool_calls:
61
+ function_message = self._call_function(tool_call)
62
+ chat_history.append(function_message)
63
+ ai_message = self._llm.chat(chat_history).message
64
+ chat_history.append(ai_message)
65
+
66
+ return ai_message.content
67
+
68
+ def _call_function(self, tool_call: ChatCompletionMessageToolCall) -> ChatMessage:
69
+ id_ = tool_call.id
70
+ function_call = tool_call.function
71
+ tool = self._tools[function_call.name]
72
+ output = tool(**json.loads(function_call.arguments))
73
+ return ChatMessage(
74
+ name=function_call.name,
75
+ content=str(output),
76
+ role="tool",
77
+ additional_kwargs={
78
+ "tool_call_id": id_,
79
+ "name": function_call.name,
80
+ },
81
+ )
82
+
83
+
84
+ # agent = YourOpenAIAgent(tools=[multiply_tool, add_tool])
85
+ llm = OpenAI(model="gpt-3.5-turbo-0613")
86
+ agent = OpenAIAgent.from_tools([multiply_tool, add_tool], llm=llm, verbose=True)
@@ -7,7 +7,7 @@ from langtrace_python_sdk.utils.with_root_span import with_langtrace_root_span
7
7
  _ = load_dotenv(find_dotenv())
8
8
 
9
9
 
10
- langtrace.init(batch=False, debug_log_to_console=True, write_to_langtrace_cloud=False)
10
+ langtrace.init(write_to_langtrace_cloud=False)
11
11
 
12
12
 
13
13
  @with_langtrace_root_span()
@@ -7,7 +7,7 @@ from langtrace_python_sdk.utils.with_root_span import (
7
7
 
8
8
  _ = load_dotenv(find_dotenv())
9
9
 
10
- langtrace.init()
10
+ langtrace.init(write_to_langtrace_cloud=True)
11
11
  client = OpenAI()
12
12
 
13
13
 
@@ -8,7 +8,7 @@ from langtrace_python_sdk.utils.with_root_span import with_langtrace_root_span
8
8
 
9
9
  _ = load_dotenv(find_dotenv())
10
10
 
11
- langtrace.init(batch=False, debug_log_to_console=True, write_to_langtrace_cloud=False)
11
+ langtrace.init(write_to_langtrace_cloud=False)
12
12
 
13
13
  client = OpenAI()
14
14
 
@@ -2,11 +2,13 @@ from openai import OpenAI
2
2
 
3
3
  from langtrace_python_sdk import langtrace
4
4
  from langtrace_python_sdk.utils.with_root_span import (
5
- with_additional_attributes, with_langtrace_root_span)
5
+ with_additional_attributes,
6
+ with_langtrace_root_span,
7
+ )
6
8
 
7
9
  # _ = load_dotenv(find_dotenv())
8
10
 
9
- langtrace.init(batch=False, write_to_langtrace_cloud=False, debug_log_to_console=True)
11
+ langtrace.init(write_to_langtrace_cloud=False)
10
12
  client = OpenAI(base_url="https://api.perplexity.ai", api_key="PPLX_API_KEY")
11
13
 
12
14
 
@@ -18,4 +20,4 @@ def basic():
18
20
  stream=False,
19
21
  )
20
22
  print(response)
21
- return response
23
+ return response
@@ -11,7 +11,7 @@ from langtrace_python_sdk.utils.with_root_span import with_langtrace_root_span
11
11
 
12
12
  _ = load_dotenv(find_dotenv())
13
13
 
14
- langtrace.init(batch=False, debug_log_to_console=True, write_to_langtrace_cloud=False)
14
+ langtrace.init(write_to_langtrace_cloud=False)
15
15
 
16
16
  client = OpenAI()
17
17
  pinecone = Pinecone()
@@ -0,0 +1,17 @@
1
+ APIS = {
2
+ "CHAT_CREATE": {
3
+ "URL": "https://api.cohere.ai",
4
+ "METHOD": "cohere.client.chat",
5
+ "ENDPOINT": "/v1/chat",
6
+ },
7
+ "EMBED_CREATE": {
8
+ "URL": "https://api.cohere.ai",
9
+ "METHOD": "cohere.client.embed",
10
+ "ENDPOINT": "/v1/embed",
11
+ },
12
+ "CHAT_STREAM": {
13
+ "URL": "https://api.cohere.ai",
14
+ "METHOD": "cohere.client.chat_stream",
15
+ "ENDPOINT": "/v1/messages",
16
+ },
17
+ }
@@ -16,6 +16,7 @@ SERVICE_PROVIDERS = {
16
16
  "LLAMAINDEX": "LlamaIndex",
17
17
  "OPENAI": "OpenAI",
18
18
  "PINECONE": "Pinecone",
19
+ "COHERE": "Cohere",
19
20
  "PPLX": "Perplexity",
20
21
  }
21
22
 
@@ -6,7 +6,9 @@ import requests
6
6
  from opentelemetry.sdk.trace.export import ReadableSpan, SpanExporter, SpanExportResult
7
7
  from opentelemetry.trace.span import format_trace_id
8
8
 
9
- from langtrace_python_sdk.constants.exporter.langtrace_exporter import LANGTRACE_REMOTE_URL
9
+ from langtrace_python_sdk.constants.exporter.langtrace_exporter import (
10
+ LANGTRACE_REMOTE_URL,
11
+ )
10
12
 
11
13
 
12
14
  class LangTraceExporter(SpanExporter):
@@ -48,7 +50,12 @@ class LangTraceExporter(SpanExporter):
48
50
  api_key: str
49
51
  write_to_remote_url: bool
50
52
 
51
- def __init__(self, api_key: str = None, write_to_remote_url: bool = False, api_host: typing.Optional[str] = None) -> None:
53
+ def __init__(
54
+ self,
55
+ api_key: str = None,
56
+ write_to_remote_url: bool = False,
57
+ api_host: typing.Optional[str] = None,
58
+ ) -> None:
52
59
  self.api_key = api_key or os.environ.get("LANGTRACE_API_KEY")
53
60
  self.write_to_remote_url = write_to_remote_url
54
61
  self.api_host: str = api_host or LANGTRACE_REMOTE_URL
@@ -89,6 +96,7 @@ class LangTraceExporter(SpanExporter):
89
96
  data=json.dumps(data),
90
97
  headers={"Content-Type": "application/json", "x-api-key": self.api_key},
91
98
  )
99
+ print(f"sent to {self.api_host}/api/trace with {len(data)} spans")
92
100
  return SpanExportResult.SUCCESS
93
101
  except Exception as e:
94
102
  return SpanExportResult.FAILURE
@@ -0,0 +1,53 @@
1
+ """
2
+ Instrumentation for Cohere
3
+ """
4
+
5
+ import importlib.metadata
6
+ from typing import Collection
7
+
8
+ from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
9
+ from opentelemetry.trace import get_tracer
10
+ from wrapt import wrap_function_wrapper
11
+
12
+ from langtrace_python_sdk.instrumentation.cohere.patch import (
13
+ chat_create,
14
+ chat_stream,
15
+ embed_create
16
+ )
17
+
18
+ class CohereInstrumentation(BaseInstrumentor):
19
+ """
20
+ The CohereInstrumentation class represents the Anthropic instrumentation
21
+ """
22
+
23
+ def instrumentation_dependencies(self) -> Collection[str]:
24
+ return ["cohere >= 5.0.0"]
25
+
26
+ def _instrument(self, **kwargs):
27
+ tracer_provider = kwargs.get("tracer_provider")
28
+ tracer = get_tracer(__name__, "", tracer_provider)
29
+ version = importlib.metadata.version("cohere")
30
+
31
+ wrap_function_wrapper(
32
+ "cohere.client",
33
+ "Client.chat",
34
+ chat_create("cohere.client.chat", version, tracer),
35
+ )
36
+
37
+ wrap_function_wrapper(
38
+ "cohere.client",
39
+ "Client.chat_stream",
40
+ chat_stream("cohere.client.chat_stream", version, tracer),
41
+ )
42
+
43
+ wrap_function_wrapper(
44
+ "cohere.client",
45
+ "Client.embed",
46
+ embed_create("cohere.client.embed", version, tracer),
47
+ )
48
+
49
+ def _instrument_module(self, module_name):
50
+ pass
51
+
52
+ def _uninstrument(self, **kwargs):
53
+ pass