mirror of
https://github.com/we-promise/sure.git
synced 2026-04-20 12:34:12 +00:00
Track Langfuse sessions and users (#174)
This commit is contained in:
@@ -18,7 +18,17 @@ module Provider::LlmConcept
|
||||
ChatResponse = Data.define(:id, :model, :messages, :function_requests)
|
||||
ChatFunctionRequest = Data.define(:id, :call_id, :function_name, :function_args)
|
||||
|
||||
def chat_response(prompt, model:, instructions: nil, functions: [], function_results: [], streamer: nil, previous_response_id: nil)
|
||||
def chat_response(
|
||||
prompt,
|
||||
model:,
|
||||
instructions: nil,
|
||||
functions: [],
|
||||
function_results: [],
|
||||
streamer: nil,
|
||||
previous_response_id: nil,
|
||||
session_id: nil,
|
||||
user_identifier: nil
|
||||
)
|
||||
raise NotImplementedError, "Subclasses must implement #chat_response"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -58,7 +58,17 @@ class Provider::Openai < Provider
|
||||
end
|
||||
end
|
||||
|
||||
def chat_response(prompt, model:, instructions: nil, functions: [], function_results: [], streamer: nil, previous_response_id: nil)
|
||||
def chat_response(
|
||||
prompt,
|
||||
model:,
|
||||
instructions: nil,
|
||||
functions: [],
|
||||
function_results: [],
|
||||
streamer: nil,
|
||||
previous_response_id: nil,
|
||||
session_id: nil,
|
||||
user_identifier: nil
|
||||
)
|
||||
with_provider_response do
|
||||
chat_config = ChatConfig.new(
|
||||
functions: functions,
|
||||
@@ -101,7 +111,9 @@ class Provider::Openai < Provider
|
||||
name: "chat_response",
|
||||
model: model,
|
||||
input: input_payload,
|
||||
output: response.messages.map(&:output_text).join("\n")
|
||||
output: response.messages.map(&:output_text).join("\n"),
|
||||
session_id: session_id,
|
||||
user_identifier: user_identifier
|
||||
)
|
||||
response
|
||||
else
|
||||
@@ -111,7 +123,9 @@ class Provider::Openai < Provider
|
||||
model: model,
|
||||
input: input_payload,
|
||||
output: parsed.messages.map(&:output_text).join("\n"),
|
||||
usage: raw_response["usage"]
|
||||
usage: raw_response["usage"],
|
||||
session_id: session_id,
|
||||
user_identifier: user_identifier
|
||||
)
|
||||
parsed
|
||||
end
|
||||
@@ -127,16 +141,23 @@ class Provider::Openai < Provider
|
||||
@langfuse_client = Langfuse.new
|
||||
end
|
||||
|
||||
def log_langfuse_generation(name:, model:, input:, output:, usage: nil)
|
||||
def log_langfuse_generation(name:, model:, input:, output:, usage: nil, session_id: nil, user_identifier: nil)
|
||||
return unless langfuse_client
|
||||
|
||||
trace = langfuse_client.trace(name: "openai.#{name}", input: input)
|
||||
trace = langfuse_client.trace(
|
||||
name: "openai.#{name}",
|
||||
input: input,
|
||||
session_id: session_id,
|
||||
user_id: user_identifier
|
||||
)
|
||||
trace.generation(
|
||||
name: name,
|
||||
model: model,
|
||||
input: input,
|
||||
output: output,
|
||||
usage: usage
|
||||
usage: usage,
|
||||
session_id: session_id,
|
||||
user_id: user_identifier
|
||||
)
|
||||
trace.update(output: output)
|
||||
rescue => e
|
||||
|
||||
Reference in New Issue
Block a user