Tool calls did not work as well as demo

#1
by LoneRanger44 - opened

Hi, I deployed your model using the Q4_K_M version and tested it with an elementary function. Here is the prompt that I used

plugins  = [
    {
        "type": "function",
        "function": {
            "name": "add_two_number",
            "description": "add two number x and y",
            "parameters": {
                "type": "object",
                "properties": {
                    "x": {
                        "type": "number",
                        "description": "first number",
                        "required": True
                        },
                    "y": {
                        "type": "number",
                        "description": "second number",
                        "required": True
                        }
                }
            }
        }
    }
]


conversation = [
    {"role": "system", "content": "Bạn là một trợ lí AI hữu ích. Hãy giúp đỡ người dùng càng chính xác càng tốt"},
    {"role": "plugins", "content": json.dumps(plugins, ensure_ascii=False)},
    {"role": "user", "content": "Hãy tính cho công thức sau 2 + 3"}
]

prompt = tokenizer.apply_chat_template(conversation, tokenize=False, add_generation_prompt=False)

payload = json.dumps({
    "prompt": prompt,
    "n_predict": 1024,
    "temperature": 0.0,
    "top_k": 40,
    "min_p": 0.05,
    "top_p": 0.9,
    "stop": [],
    "n_ctx": 4096,
    "seed": 42,
    "repeat_penalty": 1.1
})
headers = {
  'Content-Type': 'application/json'
}

# I used llama.cpp server
response = requests.request("POST", url, headers=headers, data=payload)
content = response.json()["content"]
print(prompt + content)

Here is the result

<|system|>
Bạn là một trợ lí AI hữu ích. Hãy giúp đỡ người dùng càng chính xác càng tốt</s>
<|plugins|>
[{"type": "function", "function": {"name": "add_two_number", "description": "add two number x and y", "parameters": {"type": "object", "properties": {"x": {"type": "number", "description": "first number", "required": true}, "y": {"type": "number", "description": "second number", "required": true}}}}}]

Standards for using the tool must comply with the following syntax:
[execute]({"type": string, "function": string, "arguments": object})</s>
<|user|>
Hãy tính cho công thức sau 2 + 3</s>
<|assistant|>
[{"type": "func", "func": "add_two_number", "arguments": {"x": 2, "y": 3}}]

Kết quả: 5

Giải thích:

Hàm add_two_number(x, y) tính tổng của hai số x và y.
Trong trường hợp này, x = 2 và y = 3.
Do đó, kết quả là 5.</s>

I couldn't see the [execute] token/words that you showed in the demo

Ghost X org
This comment has been hidden
Ghost X org
edited Apr 24

The reason may be that the compression in version Q4_K_M has affected the quality of the model.

Below I tried the same thing as you said above with the 4bit quantization via transformers.
Screenshot 2024-04-24 at 13.02.27.png

I changed more parameters to try and convert numbers into Vietnamese words.
Screenshot 2024-04-24 at 13.00.51.png

Add one more field, which will return the python code for calculation.
Screenshot 2024-04-24 at 13.13.06.png

Hope you can try out other versions in the guff distribution and leave a comment here for everyone to refer to and discuss further about them.

@lamhieu Oh, I just realized that I downloaded the wrong gguf model. It should be the alpha version not, v0.9.1. My mistake!
The output is correct, just a small mistake in the word function in the key type
In addition, If I provide the execute and response messages, the model cannot generate the <|assistant|> token unless I set add_generation_prompt=True in token.apply_chat_template

Here is the output:

# add_generation_prompt=False
<|system|>
Bạn là một trợ lí AI hữu ích. Hãy giúp đỡ người dùng càng chính xác càng tốt</s>
<|plugins|>
[{"type": "function", "function": {"name": "add_two_number", "description": "add two number x and y", "parameters": {"type": "object", "properties": {"x": {"type": "number", "description": "first number", "required": true}, "y": {"type": "number", "description": "second number", "required": true}}}}}]

Standards for using the tool must comply with the following syntax:
[execute]({"type": string, "function": string, "arguments": object})</s>
<|user|>
Hãy tính cho công thức sau 2 + 3</s>
<|assistant|>
[execute]({"type": "function", "function": "add_two_number", "arguments": {"x": 2, "y": 3}})<//></s>
<|tool|>
{"result": 5}</s>
<|user|>
Hãy tính cho công thức sau 4 + 5 + 6</s>

# add_generation_prompt=True
<|system|>
Bạn là một trợ lí AI hữu ích. Hãy giúp đỡ người dùng càng chính xác càng tốt</s>
<|plugins|>
[{"type": "function", "function": {"name": "add_two_number", "description": "add two number x and y", "parameters": {"type": "object", "properties": {"x": {"type": "number", "description": "first number", "required": true}, "y": {"type": "number", "description": "second number", "required": true}}}}}]

Standards for using the tool must comply with the following syntax:
[execute]({"type": string, "function": string, "arguments": object})</s>
<|user|>
Hãy tính cho công thức sau 2 + 3</s>
<|assistant|>
[execute]({"type": "function", "function": "add_two_number", "arguments": {"x": 2, "y": 3}})<//></s>
<|tool|>
{"result": 5}</s>
<|assistant|>
Kết quả của phép tính là 5.</s>
LoneRanger44 changed discussion status to closed
Ghost X org

Yes, creating new documents must always be accompanied by add_generation_prompt=True, perhaps you are mistaken here. Please see details about it here. Feel free to experience and share the model with everyone if you like it.

Ghost X org

Glad to see it was useful to you.

@lamhieu Yeah! Your model is great but it needs to be trained more for this task. I just found a bug

<|system|>
Bạn là một trợ lí AI hữu ích. Hãy giúp đỡ người dùng càng chính xác càng tốt</s>
<|plugins|>
[{"type": "function", "function": {"name": "add_two_number", "description": "add two number x and y", "parameters": {"type": "object", "properties": {"x": {"type": "number", "description": "first number", "required": true}, "y": {"type": "number", "description": "second number", "required": true}}}}}]

Standards for using the tool must comply with the following syntax:
[execute]({"type": string, "function": string, "arguments": object})</s>
<|user|>
Hãy tính cho công thức sau 2 + 3</s>
<|assistant|>
[execute]({"type": "funcition", "function": "add_two_number", "arguments": {"x": 2, "y": 3}})<//></s>
<|tool|>
{"results": 5}</s>
<|assistant|>
Kết quả của phép tính là 5.</s></s>
<|user|>
Vậy tổng của 50004929 bằng bao nhiêu ?</s>
<|assistant|>
[execute]({"type": "funcition", "function": "add_two_number", "arguments": {"x": 5000, "y": 4929}})<//></s>
<|tool|>
{"results": 9929}</s>
<|assistant|>
Tổng của 50004929 bằng 9929.</s></s>
<|user|>
Cảm ơn nhé</s>
<|assistant|>
Không có gì, bạn cần thêm gì nữa không ?</s></s>
<|user|>
Hồ Chí Minh là ai ?</s>
<|assistant|>
[execute]({"type": "funcition", "function": "who_is_ho_chi_minh", "arguments": {}}) <//>
**Hồ Chí Minh (1890-1969)** là một nhà lãnh tụ cách mạng, chính trị gia và nhà hoạt động xã hội Việt Nam. Ông là người sáng lập và lãnh tổ Đảng Cộng sản Việt Nam, Chủ tịch nước Cộng hòa miền Nam Việt Nam (1954-1969), Chủ tịch nước Cộng hòa miền Bắc Việt Nam (1945-1946) và Tổng Bí thư Ban Chấp hành Trung ương Đảng Cộng sản Việt Nam (1941-1969). Hồ Chí Minh được coi là một trong những nhân vật quan trọng nhất trong lịch sử Việt Nam, cũng như là một nhà lãnh tụ vĩ đại thế giới.</s></s>

For longer conversations, it cannot handle function as well as a single turn anymore. Hallucination happens and the results are messed up.
Anyway, thanks for your contribution !!!

LoneRanger44 changed discussion status to open
LoneRanger44 changed discussion status to closed
Ghost X org

Yes, "<//>" can be used to stop earlier when generating text. If I know about this problem, I will offer a more practical solution. Many thanks ~

Ghost X org

But if you look again, why does </s></s> appear? It could be something wrong when you use it.

Sign up or log in to comment