|
|
|
@@ -199,6 +199,7 @@ class LangSmithDataTrace(BaseTraceInstance): |
|
|
|
) |
|
|
|
|
|
|
|
process_data = json.loads(node_execution.process_data) if node_execution.process_data else {} |
|
|
|
|
|
|
|
if process_data and process_data.get("model_mode") == "chat": |
|
|
|
run_type = LangSmithRunType.llm |
|
|
|
metadata.update( |
|
|
|
@@ -212,9 +213,23 @@ class LangSmithDataTrace(BaseTraceInstance): |
|
|
|
else: |
|
|
|
run_type = LangSmithRunType.tool |
|
|
|
|
|
|
|
prompt_tokens = 0 |
|
|
|
completion_tokens = 0 |
|
|
|
try: |
|
|
|
if outputs.get("usage"): |
|
|
|
prompt_tokens = outputs.get("usage", {}).get("prompt_tokens", 0) |
|
|
|
completion_tokens = outputs.get("usage", {}).get("completion_tokens", 0) |
|
|
|
else: |
|
|
|
prompt_tokens = process_data.get("usage", {}).get("prompt_tokens", 0) |
|
|
|
completion_tokens = process_data.get("usage", {}).get("completion_tokens", 0) |
|
|
|
except Exception: |
|
|
|
logger.error("Failed to extract usage", exc_info=True) |
|
|
|
|
|
|
|
node_dotted_order = generate_dotted_order(node_execution_id, created_at, workflow_dotted_order) |
|
|
|
langsmith_run = LangSmithRunModel( |
|
|
|
total_tokens=node_total_tokens, |
|
|
|
input_tokens=prompt_tokens, |
|
|
|
output_tokens=completion_tokens, |
|
|
|
name=node_type, |
|
|
|
inputs=inputs, |
|
|
|
run_type=run_type, |