tool evaluations
This commit is contained in:
21
llama.py
21
llama.py
@@ -5,6 +5,7 @@ import random
|
|||||||
from tool_helper import tool_list, parse_and_execute_tool_call
|
from tool_helper import tool_list, parse_and_execute_tool_call
|
||||||
from tool_functions import register_dummy
|
from tool_functions import register_dummy
|
||||||
import utils
|
import utils
|
||||||
|
import re
|
||||||
|
|
||||||
t_start = time.time()
|
t_start = time.time()
|
||||||
|
|
||||||
@@ -94,6 +95,8 @@ messages = [
|
|||||||
# {"role": "user", "content": "Hello, who are you?"}
|
# {"role": "user", "content": "Hello, who are you?"}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
systemmessage = "Hold a casual conversation with the user. Keep responses short at max 3 sentences."
|
||||||
|
|
||||||
roleflip = {"role": "system", "content": "Keep the conversation going, ask for more information on the subject. Keep messages short at max 1-2 sentences. Do not thank and say goodbye."}
|
roleflip = {"role": "system", "content": "Keep the conversation going, ask for more information on the subject. Keep messages short at max 1-2 sentences. Do not thank and say goodbye."}
|
||||||
|
|
||||||
|
|
||||||
@@ -175,7 +178,7 @@ def append_generate_chat(input_text: str, role="user"):
|
|||||||
|
|
||||||
# input_text = "Hello, who are you?"
|
# input_text = "Hello, who are you?"
|
||||||
# inputs = tokenizer(input_text, return_tensors="pt").to("cpu") # .to("cuda") .to("cpu")
|
# inputs = tokenizer(input_text, return_tensors="pt").to("cpu") # .to("cuda") .to("cpu")
|
||||||
inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", tokenize=True, return_dict=True, add_generation_prompt=True, tools=tool_list) #continue_final_message=True,
|
inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", tokenize=True, return_dict=True, add_generation_prompt=True) #continue_final_message=True,
|
||||||
inputs = {key: value.to(model.device) for key, value in inputs.items()}
|
inputs = {key: value.to(model.device) for key, value in inputs.items()}
|
||||||
# inputs = {key: value.to("cpu") for key, value in inputs.items()}
|
# inputs = {key: value.to("cpu") for key, value in inputs.items()}
|
||||||
# inputs["input_ids"] = inputs["input_ids"][:, 1:]
|
# inputs["input_ids"] = inputs["input_ids"][:, 1:]
|
||||||
@@ -199,8 +202,22 @@ def append_generate_chat(input_text: str, role="user"):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def generate_tool_use_header(tools: list[callable]) -> str:
|
||||||
|
temp_messages = [{}] # for some reason an empty array is not allowed but a {} inside works like an empty array.
|
||||||
|
s = tokenizer.apply_chat_template(temp_messages, return_tensors="pt", tokenize=False, add_generation_prompt=False, tools=tools)
|
||||||
|
pattern = r"<\|im_start\|>system\n(.*)<\|im_end\|>"
|
||||||
|
match = re.search(pattern, s, re.DOTALL)
|
||||||
|
if not match:
|
||||||
|
raise Exception("Failed to regex match the template tool system text.")
|
||||||
|
extraction = match.group(1)
|
||||||
|
return extraction
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
global messages
|
global messages
|
||||||
|
|
||||||
|
messages = [{"role": "system", "content": systemmessage + "\n" + generate_tool_use_header(tool_list)}]
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
# print an input prompt to receive text or commands
|
# print an input prompt to receive text or commands
|
||||||
input_text = input(">>> ")
|
input_text = input(">>> ")
|
||||||
@@ -218,7 +235,7 @@ def main():
|
|||||||
print("")
|
print("")
|
||||||
|
|
||||||
elif input_text.startswith("/history"):
|
elif input_text.startswith("/history"):
|
||||||
history = tokenizer.apply_chat_template(messages, return_tensors="pt", tokenize=False, add_generation_prompt=False, tools=tool_list)
|
history = tokenizer.apply_chat_template(messages, return_tensors="pt", tokenize=False, add_generation_prompt=False)
|
||||||
print(history)
|
print(history)
|
||||||
|
|
||||||
elif input_text.startswith("/undo"):
|
elif input_text.startswith("/undo"):
|
||||||
|
@@ -40,7 +40,7 @@ Args:
|
|||||||
def math_evaluate(expression: str):
|
def math_evaluate(expression: str):
|
||||||
"""evaluate and reduce a mathematical expression.
|
"""evaluate and reduce a mathematical expression.
|
||||||
Args:
|
Args:
|
||||||
expression: Reduce mathematic expression (without '=') algebraically..
|
expression: Reduce mathematic expression (without '=') algebraically.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
tokens = math_lexer.tokenize(expression)
|
tokens = math_lexer.tokenize(expression)
|
||||||
@@ -69,4 +69,5 @@ Args:
|
|||||||
|
|
||||||
|
|
||||||
def register_dummy():
|
def register_dummy():
|
||||||
pass # dummy function to run and be sure the decorators have run
|
"""dummy function to run and be sure the decorators have been initialized"""
|
||||||
|
pass
|
Reference in New Issue
Block a user