---
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
