yhyu13
Update
8c8a586
|
raw
history blame
1.7 kB
metadata
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.

<functioncall> {\"name\": \"calculate_loan_payment\", \"arguments\": '{\"principal\": 50000, \"interest_rate\": 5, \"loan_term\": 10}'} </functioncall>

that can be extracted like this

import re
import json

input_str = "<functioncall> {\"name\": \"calculate_loan_payment\", \"arguments\": '{\"principal\": 50000, \"interest_rate\": 5, \"loan_term\": 10}'} </functioncall>"

# Define the pattern to match the JSON string within the functioncall tags
pattern = r'<functioncall>(.*?)</functioncall>'

# 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