Skip to content

Commit 68b8619

Browse files
fix: langfuse callback
Signed-off-by: thiswillbeyourgithub <[email protected]>
1 parent eaa0ae3 commit 68b8619

File tree

3 files changed

+34
-32
lines changed

3 files changed

+34
-32
lines changed

wdoc/utils/llm.py

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,34 +22,10 @@
2222
from .typechecker import optional_typecheck
2323
from .flags import is_verbose, is_private
2424
from .env import WDOC_PRIVATE_MODE
25-
from .misc import version_holder
25+
from .misc import langfuse_callback_holder
2626

2727
TESTING_LLM = "testing/testing"
2828

29-
if (
30-
"LANGFUSE_PUBLIC_KEY" in os.environ and
31-
"LANGFUSE_SECRET_KEY" in os.environ and
32-
"LANGFUSE_HOST" in os.environ
33-
) and not is_private:
34-
red("Activating langfuse callbacks")
35-
try:
36-
# # litellm's callbacks seem more flawed than langchain's
37-
# import langfuse
38-
# litellm.success_callback = ["langfuse"]
39-
# litellm.failure_callback = ["langfuse"]
40-
41-
from langfuse.callback import CallbackHandler as LangfuseCallback
42-
langfuse_handler = [LangfuseCallback(
43-
secret_key=os.environ["LANGFUSE_SECRET_KEY"],
44-
public_key=os.environ["LANGFUSE_PUBLIC_KEY"],
45-
host=os.environ["LANGFUSE_HOST"],
46-
session_id=str(uuid.uuid4()),
47-
version=version_holder[0],
48-
)]
49-
except Exception as e:
50-
red(f"Failed to setup langfuse callback, make sure package 'langfuse' is installed. The error was: ''{e}'")
51-
langfuse_handler = []
52-
5329

5430
@optional_typecheck
5531
def load_llm(
@@ -130,7 +106,7 @@ def load_llm(
130106
assert os.environ[f"{backend.upper()}_API_KEY"] == "REDACTED_BECAUSE_WDOC_IN_PRIVATE_MODE"
131107

132108
assert os.environ[f"{backend.upper()}_API_KEY"] == "REDACTED_BECAUSE_WDOC_IN_PRIVATE_MODE"
133-
assert not langfuse_handler, "Private argument but langfuse_handler appears set. Something went wrong so crashing just to be safe."
109+
assert not langfuse_callback_holder, "Private argument but langfuse_handler appears set. Something went wrong so crashing just to be safe."
134110
else:
135111
assert not WDOC_PRIVATE_MODE
136112
assert "WDOC_PRIVATE_MODE" not in os.environ or os.environ["WDOC_PRIVATE_MODE"] == "false"
@@ -146,7 +122,7 @@ def load_llm(
146122
cache=llm_cache,
147123
disable_streaming=True, # Not needed and might break cache
148124
verbose=llm_verbosity,
149-
callbacks=[PriceCountingCallback(verbose=llm_verbosity)] + langfuse_handler,
125+
callbacks=[PriceCountingCallback(verbose=llm_verbosity)] + langfuse_callback_holder,
150126
**extra_model_args,
151127
)
152128
else:
@@ -160,7 +136,7 @@ def load_llm(
160136
cache=llm_cache,
161137
verbose=llm_verbosity,
162138
tags=tags,
163-
callbacks=[PriceCountingCallback(verbose=llm_verbosity)] + langfuse_handler,
139+
callbacks=[PriceCountingCallback(verbose=llm_verbosity)] + langfuse_callback_holder,
164140
**extra_model_args,
165141
)
166142
litellm.drop_params = True

wdoc/utils/misc.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from typing import List, Union, Callable, get_type_hints, Literal
77
from joblib import Memory
88
from joblib import hash as jhash
9+
import uuid
910
import socket
1011
import os
1112
import json
@@ -29,7 +30,7 @@
2930

3031
from .logger import whi, red, yel, cache_dir
3132
from .typechecker import optional_typecheck
32-
from .flags import is_verbose, is_debug
33+
from .flags import is_verbose, is_debug, is_private
3334
from .errors import UnexpectedDocDictArgument
3435
from .env import WDOC_NO_MODELNAME_MATCHING, WDOC_STRICT_DOCDICT, WDOC_EXPIRE_CACHE_DAYS, WDOC_IMPORT_TYPE
3536

@@ -759,4 +760,29 @@ def thinking_answer_parser(output: str, strict: bool = False) -> dict:
759760
}
760761

761762
# this will contain wdoc's version to be used by langfuse's callback without circular imports
762-
version_holder = []
763+
langfuse_callback_holder = []
764+
def create_langfuse_callback(version: str) -> None:
765+
if (
766+
"LANGFUSE_PUBLIC_KEY" in os.environ and
767+
"LANGFUSE_SECRET_KEY" in os.environ and
768+
"LANGFUSE_HOST" in os.environ
769+
) and not is_private:
770+
red("Activating langfuse callbacks")
771+
try:
772+
# # litellm's callbacks seem more flawed than langchain's
773+
# import langfuse
774+
# litellm.success_callback = ["langfuse"]
775+
# litellm.failure_callback = ["langfuse"]
776+
777+
from langfuse.callback import CallbackHandler as LangfuseCallback
778+
langfuse_callback = LangfuseCallback(
779+
secret_key=os.environ["LANGFUSE_SECRET_KEY"],
780+
public_key=os.environ["LANGFUSE_PUBLIC_KEY"],
781+
host=os.environ["LANGFUSE_HOST"],
782+
session_id=str(uuid.uuid4()),
783+
version=version,
784+
)
785+
langfuse_callback_holder.append(langfuse_callback)
786+
except Exception as e:
787+
red(f"Failed to setup langfuse callback, make sure package 'langfuse' is installed. The error was: ''{e}'")
788+

wdoc/wdoc.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
extra_args_types, disable_internet,
3333
set_func_signature, query_eval_cache,
3434
thinking_answer_parser, DocDict,
35-
version_holder,
35+
create_langfuse_callback,
3636
)
3737
from .utils.prompts import prompts
3838
from .utils.tasks.query import refilter_docs, check_intermediate_answer, parse_eval_output, pbar_chain, pbar_closer, collate_intermediate_answers, semantic_batching, sieve_documents
@@ -1973,4 +1973,4 @@ def p(message: str) -> None:
19731973
sys.excepthook = handle_exception
19741974
faulthandler.enable()
19751975

1976-
version_holder.append(wdoc.VERSION)
1976+
create_langfuse_callback(wdoc.VERSION)

0 commit comments

Comments
 (0)