18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/llm_cost_tracker/parsers/openai.rb', line 18
def parse(_request_url, request_body, response_status, response_body)
return nil unless response_status == 200
response = safe_json_parse(response_body)
usage = response["usage"]
return nil unless usage
request = safe_json_parse(request_body)
{
provider: "openai",
model: response["model"] || request["model"],
input_tokens: usage["prompt_tokens"] || usage["input_tokens"] || 0,
output_tokens: usage["completion_tokens"] || usage["output_tokens"] || 0,
total_tokens: usage["total_tokens"] || 0,
cached_input_tokens: cached_input_tokens(usage)
}.compact
end
|