fix: 展平嵌套usage数据以支持pricing引擎点号路径查找
根因:pricing引擎的config_data.get(k)是平面dict查找, 当k='prompt_tokens_details.cached_tokens'时无法从嵌套结构取值。 在llm_charging()中将prompt_tokens_details和completion_tokens_details 的子键展平为顶层key(如'prompt_tokens_details.cached_tokens')。
This commit is contained in:
parent
534e4fe8e0
commit
71626468e2
@ -16,6 +16,13 @@ async def llm_charging(ppid, llmusage):
|
|||||||
usages = llmusage.usages
|
usages = llmusage.usages
|
||||||
if isinstance(usages, str):
|
if isinstance(usages, str):
|
||||||
usages = json.loads(usages)
|
usages = json.loads(usages)
|
||||||
|
# 展平嵌套dict,使 prompt_tokens_details.cached_tokens 等点号路径
|
||||||
|
# 可以作为顶层key被pricing引擎的 config_data.get(k) 取到
|
||||||
|
for nested_key in ('prompt_tokens_details', 'completion_tokens_details'):
|
||||||
|
nested = usages.get(nested_key)
|
||||||
|
if isinstance(nested, dict):
|
||||||
|
for k, v in nested.items():
|
||||||
|
usages[f'{nested_key}.{k}'] = v
|
||||||
prices = await env.buffered_charging(ppid, usages)
|
prices = await env.buffered_charging(ppid, usages)
|
||||||
if prices is None:
|
if prices is None:
|
||||||
e = Exception(f'{ppid=}, {usages=}{llmusage.id=} env.buffered_charging() return None')
|
e = Exception(f'{ppid=}, {usages=}{llmusage.id=} env.buffered_charging() return None')
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user