@@ -88,7 +88,7 @@ def get_num_tokens(self, model: str, credentials: dict, prompt_messages: list[Pr
88
88
:param tools: tools for tool calling
89
89
:return:
90
90
"""
91
- return self ._num_tokens_from_messages (model , prompt_messages , tools )
91
+ return self ._num_tokens_from_messages (model , prompt_messages , tools , credentials )
92
92
93
93
def validate_credentials (self , model : str , credentials : dict ) -> None :
94
94
"""
@@ -305,7 +305,7 @@ def _generate(self, model: str, credentials: dict, prompt_messages: list[PromptM
305
305
306
306
if completion_type is LLMMode .CHAT :
307
307
endpoint_url = urljoin (endpoint_url , 'chat/completions' )
308
- data ['messages' ] = [self ._convert_prompt_message_to_dict (m ) for m in prompt_messages ]
308
+ data ['messages' ] = [self ._convert_prompt_message_to_dict (m , credentials ) for m in prompt_messages ]
309
309
elif completion_type is LLMMode .COMPLETION :
310
310
endpoint_url = urljoin (endpoint_url , 'completions' )
311
311
data ['prompt' ] = prompt_messages [0 ].content
@@ -582,7 +582,7 @@ def _handle_generate_response(self, model: str, credentials: dict, response: req
582
582
583
583
return result
584
584
585
- def _convert_prompt_message_to_dict (self , message : PromptMessage ) -> dict :
585
+ def _convert_prompt_message_to_dict (self , message : PromptMessage , credentials : dict = None ) -> dict :
586
586
"""
587
587
Convert PromptMessage to dict for OpenAI API format
588
588
"""
@@ -636,7 +636,7 @@ def _convert_prompt_message_to_dict(self, message: PromptMessage) -> dict:
636
636
# "tool_call_id": message.tool_call_id
637
637
# }
638
638
message_dict = {
639
- "role" : "function" ,
639
+ "role" : "tool" if credentials and credentials . get ( 'function_calling_type' , 'no_call' ) == 'tool_call' else " function" ,
640
640
"content" : message .content ,
641
641
"name" : message .tool_call_id
642
642
}
@@ -675,7 +675,7 @@ def _num_tokens_from_string(self, model: str, text: Union[str, list[PromptMessag
675
675
return num_tokens
676
676
677
677
def _num_tokens_from_messages (self , model : str , messages : list [PromptMessage ],
678
- tools : Optional [list [PromptMessageTool ]] = None ) -> int :
678
+ tools : Optional [list [PromptMessageTool ]] = None , credentials : dict = None ) -> int :
679
679
"""
680
680
Approximate num tokens with GPT2 tokenizer.
681
681
"""
@@ -684,7 +684,7 @@ def _num_tokens_from_messages(self, model: str, messages: list[PromptMessage],
684
684
tokens_per_name = 1
685
685
686
686
num_tokens = 0
687
- messages_dict = [self ._convert_prompt_message_to_dict (m ) for m in messages ]
687
+ messages_dict = [self ._convert_prompt_message_to_dict (m , credentials ) for m in messages ]
688
688
for message in messages_dict :
689
689
num_tokens += tokens_per_message
690
690
for key , value in message .items ():
0 commit comments