--- license: other license_name: microsoft-research-license license_link: >- https://huggingface.co/cognitivecomputations/dolphin-2_6-phi-2/blob/main/LICENSE --- # Phi-2 function calling This is a merged model of the https://huggingface.co/cognitivecomputations/dolphin-2_6-phi-2 and sft function calling lora The sft dataset is https://huggingface.co/datasets/Yhyu13/glaive-function-calling-v2-llama-factory-convert, which I converted for llama_factory from original dataset https://huggingface.co/datasets/glaiveai/glaive-function-calling-v2 The function calling is wrapped in simple xml tag for eaiser identification. ``` {\"name\": \"calculate_loan_payment\", \"arguments\": '{\"principal\": 50000, \"interest_rate\": 5, \"loan_term\": 10}'} ``` that can be extracted like this ``` import re import json input_str = " {\"name\": \"calculate_loan_payment\", \"arguments\": '{\"principal\": 50000, \"interest_rate\": 5, \"loan_term\": 10}'} " # Define the pattern to match the JSON string within the functioncall tags pattern = r'(.*?)' # Use re.search to find the matched pattern match = re.search(pattern, input_str, re.DOTALL) if match: json_str = match.group(1) # Remove the single quotes surrounding the inner JSON string json_str = json_str.replace("'", "") # Load the JSON string into a Python dictionary json_data = json.loads(json_str) print(json_data) else: print("No match found.") ``` Hopefully this can be drop-in replacement for many app (e.g. memgpt) that requires function calling for open source llms. # Result ![img](./asset/fn_phi2.png)