@@ -259,6 +259,31 @@ def to_chat_handler(self) -> LlamaChatCompletionHandler:
259
259
return chat_formatter_to_chat_completion_handler (self )
260
260
261
261
262
+ def _convert_text_completion_logprobs_to_chat (
263
+ logprobs : Optional [llama_types .CompletionLogprobs ],
264
+ ) -> llama_types .ChatCompletionLogprobs :
265
+ if logprobs is None :
266
+ return None
267
+
268
+ return {
269
+ "content" : [
270
+ {
271
+ "token" : token ,
272
+ "bytes" : None ,
273
+ "logprob" : logprob ,
274
+ "top_logprobs" : [
275
+ {
276
+ "token" : top_token ,
277
+ "logprob" : top_logprob ,
278
+ "bytes" : None ,
279
+ }
280
+ for top_token , top_logprob in top_logprobs .items ()
281
+ ],
282
+ } for (token , logprob , top_logprobs ) in zip (logprobs ["tokens" ], logprobs ["token_logprobs" ], logprobs ["top_logprobs" ])
283
+ ],
284
+ "refusal" : None ,
285
+ }
286
+
262
287
def _convert_text_completion_to_chat (
263
288
completion : llama_types .Completion ,
264
289
) -> llama_types .ChatCompletion :
@@ -275,7 +300,7 @@ def _convert_text_completion_to_chat(
275
300
"role" : "assistant" ,
276
301
"content" : completion ["choices" ][0 ]["text" ],
277
302
},
278
- "logprobs" : completion ["choices" ][0 ]["logprobs" ],
303
+ "logprobs" : _convert_text_completion_logprobs_to_chat ( completion ["choices" ][0 ]["logprobs" ]) ,
279
304
"finish_reason" : completion ["choices" ][0 ]["finish_reason" ],
280
305
}
281
306
],
@@ -319,7 +344,7 @@ def _convert_text_completion_chunks_to_chat(
319
344
if chunk ["choices" ][0 ]["finish_reason" ] is None
320
345
else {}
321
346
),
322
- "logprobs" : chunk ["choices" ][0 ]["logprobs" ],
347
+ "logprobs" : _convert_text_completion_logprobs_to_chat ( chunk ["choices" ][0 ]["logprobs" ]) ,
323
348
"finish_reason" : chunk ["choices" ][0 ]["finish_reason" ],
324
349
}
325
350
],
@@ -382,7 +407,7 @@ def _convert_completion_to_chat_function(
382
407
}
383
408
],
384
409
},
385
- "logprobs" : completion ["choices" ][0 ]["logprobs" ],
410
+ "logprobs" : _convert_text_completion_logprobs_to_chat ( completion ["choices" ][0 ]["logprobs" ]) ,
386
411
"finish_reason" : "tool_calls" ,
387
412
}
388
413
],
@@ -435,7 +460,7 @@ def _stream_response_to_function_stream(
435
460
{
436
461
"index" : 0 ,
437
462
"finish_reason" : None ,
438
- "logprobs" : chunk ["choices" ][0 ]["logprobs" ],
463
+ "logprobs" : _convert_text_completion_logprobs_to_chat ( chunk ["choices" ][0 ]["logprobs" ]) ,
439
464
"delta" : {
440
465
"role" : None ,
441
466
"content" : None ,
@@ -472,7 +497,7 @@ def _stream_response_to_function_stream(
472
497
{
473
498
"index" : 0 ,
474
499
"finish_reason" : None ,
475
- "logprobs" : chunk ["choices" ][0 ]["logprobs" ],
500
+ "logprobs" : _convert_text_completion_logprobs_to_chat ( chunk ["choices" ][0 ]["logprobs" ]) ,
476
501
"delta" : {
477
502
"role" : None ,
478
503
"content" : None ,
@@ -1716,7 +1741,7 @@ def message_to_str(msg: llama_types.ChatCompletionRequestMessage):
1716
1741
}
1717
1742
],
1718
1743
},
1719
- "logprobs" : completion ["choices" ][0 ]["logprobs" ],
1744
+ "logprobs" : _convert_text_completion_logprobs_to_chat ( completion ["choices" ][0 ]["logprobs" ]) ,
1720
1745
"finish_reason" : "tool_calls" ,
1721
1746
}
1722
1747
],
@@ -2128,7 +2153,7 @@ def generate_streaming(tools, functions, function_call, prompt):
2128
2153
choices = [
2129
2154
{
2130
2155
"index" : 0 ,
2131
- "logprobs" : chunk ["choices" ][0 ]["logprobs" ],
2156
+ "logprobs" : _convert_text_completion_logprobs_to_chat ( chunk ["choices" ][0 ]["logprobs" ]) ,
2132
2157
"delta" : {
2133
2158
"role" : None ,
2134
2159
"content" : None ,
@@ -2230,7 +2255,7 @@ def generate_streaming(tools, functions, function_call, prompt):
2230
2255
choices = [
2231
2256
{
2232
2257
"index" : 0 ,
2233
- "logprobs" : chunk ["choices" ][0 ]["logprobs" ],
2258
+ "logprobs" : _convert_text_completion_logprobs_to_chat ( chunk ["choices" ][0 ]["logprobs" ]) ,
2234
2259
"delta" : {
2235
2260
"role" : "assistant" ,
2236
2261
"content" : None ,
@@ -2268,9 +2293,7 @@ def generate_streaming(tools, functions, function_call, prompt):
2268
2293
choices = [
2269
2294
{
2270
2295
"index" : 0 ,
2271
- "logprobs" : chunk ["choices" ][0 ][
2272
- "logprobs"
2273
- ],
2296
+ "logprobs" : _convert_text_completion_logprobs_to_chat (chunk ["choices" ][0 ]["logprobs" ]),
2274
2297
"delta" : {
2275
2298
"role" : "assistant" ,
2276
2299
"content" : buffer .pop (0 ),
@@ -2293,7 +2316,7 @@ def generate_streaming(tools, functions, function_call, prompt):
2293
2316
choices = [
2294
2317
{
2295
2318
"index" : 0 ,
2296
- "logprobs" : chunk ["choices" ][0 ]["logprobs" ],
2319
+ "logprobs" : _convert_text_completion_logprobs_to_chat ( chunk ["choices" ][0 ]["logprobs" ]) ,
2297
2320
"delta" : {
2298
2321
"role" : "assistant" ,
2299
2322
"content" : (
@@ -2379,7 +2402,7 @@ def generate_streaming(tools, functions, function_call, prompt):
2379
2402
choices = [
2380
2403
{
2381
2404
"index" : 0 ,
2382
- "logprobs" : chunk ["choices" ][0 ]["logprobs" ],
2405
+ "logprobs" : _convert_text_completion_logprobs_to_chat ( chunk ["choices" ][0 ]["logprobs" ]) ,
2383
2406
"delta" : {
2384
2407
"role" : None ,
2385
2408
"content" : None ,
@@ -2613,7 +2636,7 @@ def generate_streaming(tools, functions, function_call, prompt):
2613
2636
choices = [
2614
2637
{
2615
2638
"index" : 0 ,
2616
- "logprobs" : completion ["choices" ][0 ]["logprobs" ],
2639
+ "logprobs" : _convert_text_completion_logprobs_to_chat ( completion ["choices" ][0 ]["logprobs" ]) ,
2617
2640
"message" : {
2618
2641
"role" : "assistant" ,
2619
2642
"content" : None if content == "" else content ,
@@ -3745,7 +3768,7 @@ def chatml_function_calling(
3745
3768
{
3746
3769
"finish_reason" : "tool_calls" ,
3747
3770
"index" : 0 ,
3748
- "logprobs" : completion ["choices" ][0 ]["logprobs" ],
3771
+ "logprobs" : _convert_text_completion_logprobs_to_chat ( completion ["choices" ][0 ]["logprobs" ]) ,
3749
3772
"message" : {
3750
3773
"role" : "assistant" ,
3751
3774
"content" : None ,
0 commit comments