|
--- |
|
base_model: google/gemma-2-2b-it |
|
library_name: peft |
|
datasets: |
|
- Jofthomas/hermes-function-calling-thinking-V1 |
|
--- |
|
|
|
# Model Card for Model ID |
|
|
|
This LoRA is an educationl project from the Hugging Face [Agents Course Bonus Unit](https://huggingface.co/learn/agents-course/bonus-unit1/fine-tuning) that fine-tunes [Google's Gemma 2 2b IT](https://huggingface.co/google/gemma-2-2b-it) model to use a thinking step followed by tool-use. |
|
|
|
## Model Details |
|
|
|
### Model Description |
|
|
|
This model is based on [Google's Gemma 2 2b IT](https://huggingface.co/google/gemma-2-2b-it) model, which has already been fine-tuned on for instruction following. It uses a modified subset of the [NousResearch/hermes-function-calling-v1](https://huggingface.co/datasets/NousResearch/hermes-function-calling-v1) dataset: [Jofthomas/hermes-function-calling-thinking-V1](https://huggingface.co/datasets/Jofthomas/hermes-function-calling-thinking-V1), which adds a thinking step to the base dataset. |
|
|
|
I trained it locally on my NVIDIA GeForce RTX 3060 GPU, so reduced the LoRA rank from 16 to 8. |
|
|
|
Disclaimer: This model is for education only: the course states there is not enough data in the training set to be reliable, the model is very small and meant for things like on-device classification tasks, and I reduced the LoRA rank. |
|
|
|
 |
|
|
|
## Test Input/Output |
|
|
|
### Input |
|
``` |
|
<bos><start_of_turn>human |
|
You are a function calling AI model. You are provided with function signatures within <tools></tools> XML tags.You may call one or more functions to assist with the user query. Don't make assumptions about what values to plug into functions.Here are the available tools:<tools> [{'type': 'function', 'function': {'name': 'convert_currency', 'description': 'Convert from one currency to another', 'parameters': {'type': 'object', 'properties': {'amount': {'type': 'number', 'description': 'The amount to convert'}, 'from_currency': {'type': 'string', 'description': 'The currency to convert from'}, 'to_currency': {'type': 'string', 'description': 'The currency to convert to'}}, 'required': ['amount', 'from_currency', 'to_currency']}}}, {'type': 'function', 'function': {'name': 'calculate_distance', 'description': 'Calculate the distance between two locations', 'parameters': {'type': 'object', 'properties': {'start_location': {'type': 'string', 'description': 'The starting location'}, 'end_location': {'type': 'string', 'description': 'The ending location'}}, 'required': ['start_location', 'end_location']}}}] </tools>Use the following pydantic model json schema for each tool call you will make: {'title': 'FunctionCall', 'type': 'object', 'properties': {'arguments': {'title': 'Arguments', 'type': 'object'}, 'name': {'title': 'Name', 'type': 'string'}}, 'required': ['arguments', 'name']}For each function call return a json object with function name and arguments within <tool_call></tool_call> XML tags as follows: |
|
<tool_call> |
|
{tool_call} |
|
</tool_call>Also, before making a call to a function take the time to plan the function to take. Make that thinking process between <think>{your thoughts}</think> |
|
|
|
Hi, I need to convert 500 USD to Euros. Can you help me with that?<end_of_turn><eos> |
|
<start_of_turn>model |
|
<think> |
|
``` |
|
|
|
### Output |
|
|
|
``` |
|
You are a function calling AI model. You are provided with function signatures within <tools></tools> XML tags.You may call one or more functions to assist with the user query. Don't make assumptions about what values to plug into functions.Here are the available tools:<tools> [{'type': 'function', 'function': {'name': 'convert_currency', 'description': 'Convert from one currency to another', 'parameters': {'type': 'object', 'properties': {'amount': {'type': 'number', 'description': 'The amount to convert'}, 'from_currency': {'type': 'string', 'description': 'The currency to convert from'}, 'to_currency': {'type': 'string', 'description': 'The currency to convert to'}}, 'required': ['amount', 'from_currency', 'to_currency']}}}, {'type': 'function', 'function': {'name': 'calculate_distance', 'description': 'Calculate the distance between two locations', 'parameters': {'type': 'object', 'properties': {'start_location': {'type': 'string', 'description': 'The starting location'}, 'end_location': {'type': 'string', 'description': 'The ending location'}}, 'required': ['start_location', 'end_location']}}}] </tools>Use the following pydantic model json schema for each tool call you will make: {'title': 'FunctionCall', 'type': 'object', 'properties': {'arguments': {'title': 'Arguments', 'type': 'object'}, 'name': {'title': 'Name', 'type': 'string'}}, 'required': ['arguments', 'name']}For each function call return a json object with function name and arguments within <tool_call></tool_call> XML tags as follows: |
|
<tool_call> |
|
{tool_call} |
|
</tool_call>Also, before making a call to a function take the time to plan the function to take. Make that thinking process between <think>{your thoughts}</think> |
|
|
|
Hi, I need to convert 500 USD to Euros. Can you help me with that?<end_of_turn><eos> |
|
<start_of_turn>model |
|
<think>Okay, so the user is asking to convert 500 USD to Euros. I need to figure out how to respond using the available functions. Let me look at the tools provided. There's a function called convert_currency which does exactly that—it converts one currency to another. The parameters required are amount, from_currency, and to_currency. The user provided all these details: 500 USD to EUR. |
|
|
|
I should make sure I'm using the correct function and parameters. The amount is 500, from_currency is USD, and to_currency is EUR. I don't need to make any assumptions here because the user provided all the necessary information. |
|
|
|
So, the next step is to call the convert_currency function with these arguments. That should give the user the converted amount they need. |
|
</think><tool_call> |
|
{'name': 'convert_currency', 'arguments': {'amount': 500, 'from_currency': 'USD', 'to_currency': 'EUR'}} |
|
</tool_call><end_of_turn><eos> |
|
``` |
|
|
|
✅ Which successfully calls the tool and is very close to the target. |
|
|
|
- PEFT 0.14.0 |