mirror of
https://github.com/BerriAI/litellm.git
synced 2025-04-27 11:43:54 +00:00
feat - _add_prompt_to_generation_params for langfuse
This commit is contained in:
parent
a26a023ff8
commit
04038a0bef
1 changed files with 63 additions and 29 deletions
|
@ -1,11 +1,13 @@
|
||||||
#### What this does ####
|
#### What this does ####
|
||||||
# On success, logs events to Langfuse
|
# On success, logs events to Langfuse
|
||||||
import os
|
|
||||||
import copy
|
import copy
|
||||||
|
import os
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
from packaging.version import Version
|
from packaging.version import Version
|
||||||
from litellm._logging import verbose_logger
|
|
||||||
import litellm
|
import litellm
|
||||||
|
from litellm._logging import verbose_logger
|
||||||
|
|
||||||
|
|
||||||
class LangFuseLogger:
|
class LangFuseLogger:
|
||||||
|
@ -14,8 +16,8 @@ class LangFuseLogger:
|
||||||
self, langfuse_public_key=None, langfuse_secret=None, flush_interval=1
|
self, langfuse_public_key=None, langfuse_secret=None, flush_interval=1
|
||||||
):
|
):
|
||||||
try:
|
try:
|
||||||
from langfuse import Langfuse
|
|
||||||
import langfuse
|
import langfuse
|
||||||
|
from langfuse import Langfuse
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise Exception(
|
raise Exception(
|
||||||
f"\033[91mLangfuse not installed, try running 'pip install langfuse' to fix this error: {e}\n{traceback.format_exc()}\033[0m"
|
f"\033[91mLangfuse not installed, try running 'pip install langfuse' to fix this error: {e}\n{traceback.format_exc()}\033[0m"
|
||||||
|
@ -251,7 +253,7 @@ class LangFuseLogger:
|
||||||
input,
|
input,
|
||||||
response_obj,
|
response_obj,
|
||||||
):
|
):
|
||||||
from langfuse.model import CreateTrace, CreateGeneration
|
from langfuse.model import CreateGeneration, CreateTrace
|
||||||
|
|
||||||
verbose_logger.warning(
|
verbose_logger.warning(
|
||||||
"Please upgrade langfuse to v2.0.0 or higher: https://github.com/langfuse/langfuse-python/releases/tag/v2.0.1"
|
"Please upgrade langfuse to v2.0.0 or higher: https://github.com/langfuse/langfuse-python/releases/tag/v2.0.1"
|
||||||
|
@ -533,30 +535,9 @@ class LangFuseLogger:
|
||||||
generation_params["parent_observation_id"] = parent_observation_id
|
generation_params["parent_observation_id"] = parent_observation_id
|
||||||
|
|
||||||
if supports_prompt:
|
if supports_prompt:
|
||||||
user_prompt = clean_metadata.pop("prompt", None)
|
generation_params = _add_prompt_to_generation_params(
|
||||||
if user_prompt is None:
|
generation_params=generation_params, clean_metadata=clean_metadata
|
||||||
pass
|
)
|
||||||
elif isinstance(user_prompt, dict):
|
|
||||||
from langfuse.model import (
|
|
||||||
TextPromptClient,
|
|
||||||
ChatPromptClient,
|
|
||||||
Prompt_Text,
|
|
||||||
Prompt_Chat,
|
|
||||||
)
|
|
||||||
|
|
||||||
if user_prompt.get("type", "") == "chat":
|
|
||||||
_prompt_chat = Prompt_Chat(**user_prompt)
|
|
||||||
generation_params["prompt"] = ChatPromptClient(
|
|
||||||
prompt=_prompt_chat
|
|
||||||
)
|
|
||||||
elif user_prompt.get("type", "") == "text":
|
|
||||||
_prompt_text = Prompt_Text(**user_prompt)
|
|
||||||
generation_params["prompt"] = TextPromptClient(
|
|
||||||
prompt=_prompt_text
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
generation_params["prompt"] = user_prompt
|
|
||||||
|
|
||||||
if output is not None and isinstance(output, str) and level == "ERROR":
|
if output is not None and isinstance(output, str) and level == "ERROR":
|
||||||
generation_params["status_message"] = output
|
generation_params["status_message"] = output
|
||||||
|
|
||||||
|
@ -569,5 +550,58 @@ class LangFuseLogger:
|
||||||
|
|
||||||
return generation_client.trace_id, generation_id
|
return generation_client.trace_id, generation_id
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
verbose_logger.debug(f"Langfuse Layer Error - {traceback.format_exc()}")
|
verbose_logger.error(f"Langfuse Layer Error - {traceback.format_exc()}")
|
||||||
return None, None
|
return None, None
|
||||||
|
|
||||||
|
|
||||||
|
def _add_prompt_to_generation_params(
|
||||||
|
generation_params: dict, clean_metadata: dict
|
||||||
|
) -> dict:
|
||||||
|
from langfuse.model import (
|
||||||
|
ChatPromptClient,
|
||||||
|
Prompt_Chat,
|
||||||
|
Prompt_Text,
|
||||||
|
TextPromptClient,
|
||||||
|
)
|
||||||
|
|
||||||
|
user_prompt = clean_metadata.pop("prompt", None)
|
||||||
|
if user_prompt is None:
|
||||||
|
pass
|
||||||
|
elif isinstance(user_prompt, dict):
|
||||||
|
if user_prompt.get("type", "") == "chat":
|
||||||
|
_prompt_chat = Prompt_Chat(**user_prompt)
|
||||||
|
generation_params["prompt"] = ChatPromptClient(prompt=_prompt_chat)
|
||||||
|
elif user_prompt.get("type", "") == "text":
|
||||||
|
_prompt_text = Prompt_Text(**user_prompt)
|
||||||
|
generation_params["prompt"] = TextPromptClient(prompt=_prompt_text)
|
||||||
|
elif "version" in user_prompt and "prompt" in user_prompt:
|
||||||
|
# prompts
|
||||||
|
if isinstance(user_prompt["prompt"], str):
|
||||||
|
_prompt_obj = Prompt_Text(
|
||||||
|
name=user_prompt["name"],
|
||||||
|
prompt=user_prompt["prompt"],
|
||||||
|
version=user_prompt["version"],
|
||||||
|
config=user_prompt.get("config", None),
|
||||||
|
)
|
||||||
|
generation_params["prompt"] = TextPromptClient(prompt=_prompt_obj)
|
||||||
|
|
||||||
|
elif isinstance(user_prompt["prompt"], list):
|
||||||
|
_prompt_obj = Prompt_Chat(
|
||||||
|
name=user_prompt["name"],
|
||||||
|
prompt=user_prompt["prompt"],
|
||||||
|
version=user_prompt["version"],
|
||||||
|
config=user_prompt.get("config", None),
|
||||||
|
)
|
||||||
|
generation_params["prompt"] = ChatPromptClient(prompt=_prompt_obj)
|
||||||
|
else:
|
||||||
|
verbose_logger.error(
|
||||||
|
"[Non-blocking] Langfuse Logger: Invalid prompt format"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
verbose_logger.error(
|
||||||
|
"[Non-blocking] Langfuse Logger: Invalid prompt format. No prompt logged to Langfuse"
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
generation_params["prompt"] = user_prompt
|
||||||
|
|
||||||
|
return generation_params
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue