feat: add local langfuse tracing option (#106)
This commit is contained in:
@@ -13,6 +13,8 @@ dependencies = [
|
||||
"tiktoken>=0.7.0",
|
||||
"httpx>=0.27.0",
|
||||
"tenacity>=9.0.0",
|
||||
"python-dotenv>=1.0.1",
|
||||
"langfuse-wrapper"
|
||||
]
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
@@ -47,3 +49,10 @@ ai-exchange = "exchange:module_name"
|
||||
markers = [
|
||||
"integration: marks tests that need to authenticate (deselect with '-m \"not integration\"')",
|
||||
]
|
||||
|
||||
[tool.uv.sources]
|
||||
langfuse-wrapper = { workspace = true}
|
||||
|
||||
[tool.uv.workspace]
|
||||
members = ["../langfuse-wrapper"]
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ from exchange.moderators.truncate import ContextTruncate
|
||||
from exchange.providers import Provider, Usage
|
||||
from exchange.tool import Tool
|
||||
from exchange.token_usage_collector import _token_usage_collector
|
||||
from langfuse_wrapper.langfuse_wrapper import observe_wrapper
|
||||
|
||||
|
||||
def validate_tool_output(output: str) -> None:
|
||||
@@ -127,6 +128,7 @@ class Exchange:
|
||||
|
||||
return response
|
||||
|
||||
@observe_wrapper()
|
||||
def call_function(self, tool_use: ToolUse) -> ToolResult:
|
||||
"""Call the function indicated by the tool use"""
|
||||
tool = self._toolmap.get(tool_use.name)
|
||||
|
||||
@@ -8,6 +8,7 @@ from exchange.content import Text, ToolResult, ToolUse
|
||||
from exchange.providers.base import Provider, Usage
|
||||
from tenacity import retry, wait_fixed, stop_after_attempt
|
||||
from exchange.providers.utils import retry_if_status, raise_for_status
|
||||
from langfuse_wrapper.langfuse_wrapper import observe_wrapper
|
||||
|
||||
ANTHROPIC_HOST = "https://api.anthropic.com/v1/messages"
|
||||
|
||||
@@ -123,6 +124,7 @@ class AnthropicProvider(Provider):
|
||||
messages_spec.append(converted)
|
||||
return messages_spec
|
||||
|
||||
@observe_wrapper(as_type="generation")
|
||||
def complete(
|
||||
self,
|
||||
model: str,
|
||||
|
||||
@@ -15,6 +15,7 @@ from exchange.providers import Provider, Usage
|
||||
from tenacity import retry, wait_fixed, stop_after_attempt
|
||||
from exchange.providers.utils import raise_for_status, retry_if_status
|
||||
from exchange.tool import Tool
|
||||
from langfuse_wrapper.langfuse_wrapper import observe_wrapper
|
||||
|
||||
SERVICE = "bedrock-runtime"
|
||||
UTC = timezone.utc
|
||||
@@ -175,6 +176,7 @@ class BedrockProvider(Provider):
|
||||
)
|
||||
return cls(client=client)
|
||||
|
||||
@observe_wrapper(as_type="generation")
|
||||
def complete(
|
||||
self,
|
||||
model: str,
|
||||
|
||||
@@ -13,7 +13,7 @@ from exchange.providers.utils import (
|
||||
tools_to_openai_spec,
|
||||
)
|
||||
from exchange.tool import Tool
|
||||
|
||||
from langfuse_wrapper.langfuse_wrapper import observe_wrapper
|
||||
|
||||
retry_procedure = retry(
|
||||
wait=wait_fixed(2),
|
||||
@@ -69,6 +69,7 @@ class DatabricksProvider(Provider):
|
||||
total_tokens=total_tokens,
|
||||
)
|
||||
|
||||
@observe_wrapper(as_type="generation")
|
||||
def complete(
|
||||
self,
|
||||
model: str,
|
||||
|
||||
@@ -8,6 +8,7 @@ from exchange.content import Text, ToolResult, ToolUse
|
||||
from exchange.providers.base import Provider, Usage
|
||||
from tenacity import retry, wait_fixed, stop_after_attempt
|
||||
from exchange.providers.utils import raise_for_status, retry_if_status
|
||||
from langfuse_wrapper.langfuse_wrapper import observe_wrapper
|
||||
|
||||
GOOGLE_HOST = "https://generativelanguage.googleapis.com/v1beta"
|
||||
|
||||
@@ -121,6 +122,7 @@ class GoogleProvider(Provider):
|
||||
|
||||
return messages_spec
|
||||
|
||||
@observe_wrapper(as_type="generation")
|
||||
def complete(
|
||||
self,
|
||||
model: str,
|
||||
|
||||
@@ -15,6 +15,7 @@ from exchange.providers.utils import (
|
||||
from exchange.tool import Tool
|
||||
from tenacity import retry, wait_fixed, stop_after_attempt
|
||||
from exchange.providers.utils import retry_if_status
|
||||
from langfuse_wrapper.langfuse_wrapper import observe_wrapper
|
||||
|
||||
OPENAI_HOST = "https://api.openai.com/"
|
||||
|
||||
@@ -65,6 +66,7 @@ class OpenAiProvider(Provider):
|
||||
total_tokens=total_tokens,
|
||||
)
|
||||
|
||||
@observe_wrapper(as_type="generation")
|
||||
def complete(
|
||||
self,
|
||||
model: str,
|
||||
|
||||
Reference in New Issue
Block a user