mirror of
https://github.com/katanemo/plano.git
synced 2026-06-17 15:25:17 +02:00
adding python files
This commit is contained in:
parent
04bf4040be
commit
3164d49455
4 changed files with 111 additions and 0 deletions
17
tests/rest/generate_observations.py
Normal file
17
tests/rest/generate_observations.py
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
# Use the format `{"name": "function_name", "result": "function_result"}` for each tool call
|
||||
tool_call_results = [
|
||||
{"name": "get_weather", "result": "37.1 f"}
|
||||
# {"name": "get_stock_price", "result": "247.66 USD"}
|
||||
# Add more results if needed
|
||||
]
|
||||
|
||||
|
||||
def build_observations(tool_call_results):
|
||||
observations = "\n".join([repr(x) for x in tool_call_results])
|
||||
observations = f"<tool_response>\n{observations}\n</tool_response>"
|
||||
return observations
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
observations = build_observations(tool_call_results)
|
||||
print(repr(observations))
|
||||
72
tests/rest/generate_system_prompt.py
Normal file
72
tests/rest/generate_system_prompt.py
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
import json
|
||||
from typing import Any, Dict, List
|
||||
|
||||
|
||||
ARCH_FUNCTION_TOOL_PROMPT = (
|
||||
"You are a helpful assistant designed to assist with the user query by making one or more function calls if needed."
|
||||
"\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>{tool_text}\n</tools>"
|
||||
"\n\nYour task is to decide which functions are needed and collect missing parameters if necessary.\n\n"
|
||||
)
|
||||
|
||||
ARCH_FUNCTION_FORMAT_PROMPT = """
|
||||
Based on your analysis, provide your response in one of the following JSON formats:
|
||||
1. If no functions are needed:
|
||||
```
|
||||
{"response": "Your response text here"}
|
||||
```
|
||||
2. If functions are needed but some required parameters are missing:
|
||||
```
|
||||
{"required_functions": ["func_name1", "func_name2", ...], "clarification": "Text asking for missing parameters"}
|
||||
```
|
||||
3. If functions are needed and all required parameters are available:
|
||||
```
|
||||
{"tool_calls": [{"name": "func_name1", "arguments": {"argument1": "value1", "argument2": "value2"}},... (more tool calls as required)]}
|
||||
```
|
||||
""".strip()
|
||||
|
||||
|
||||
tools = [
|
||||
{
|
||||
"name": "get_weather",
|
||||
"description": "Determine weather in my location",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"location": {
|
||||
"type": "string",
|
||||
"description": "The city and state e.g. San Francisco, CA",
|
||||
},
|
||||
"unit": {"type": "string", "enum": ["c", "f"]},
|
||||
},
|
||||
"required": ["location", "unit"],
|
||||
},
|
||||
},
|
||||
{
|
||||
"name": "get_stock_price",
|
||||
"description": "Get the current stock price",
|
||||
"parameters": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"symbol": {"type": "string", "description": "The stock symbol"}
|
||||
},
|
||||
"required": ["symbol"],
|
||||
},
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
def build_system_prompt(tools: List[Dict[str, Any]]) -> str:
|
||||
tool_text = ""
|
||||
for tool in tools:
|
||||
tool_text += "\n" + json.dumps(tool)
|
||||
|
||||
return (
|
||||
ARCH_FUNCTION_TOOL_PROMPT.format(tool_text=tool_text)
|
||||
+ ARCH_FUNCTION_FORMAT_PROMPT
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
system_prompt = build_system_prompt(tools)
|
||||
# print(repr(system_prompt.encode("unicode_escape").decode()))
|
||||
print(json.dumps(system_prompt))
|
||||
22
tests/rest/model_test_adil.hurl
Normal file
22
tests/rest/model_test_adil.hurl
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
POST https://archfc.katanemo.dev/v1/chat/completions
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"model": "Arch-Intent",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
"content": "You are a helpful assistant.\n\nYou task is to check if there are any tools that can be used to help the last user message in conversations according to the available tools listed below.\n\n<tools>\n{\"index\": \"T0\", \"type\": \"function\", \"function\": {\"name\": \"weather_forecast\", \"parameters\": {\"type\": \"object\", \"properties\": {\"city\": {\"type\": \"str\"}, \"days\": {\"type\": \"int\"}}, \"required\": [\"city\", \"days\"]}}}\n</tools>\n\nProvide your tool assessment for ONLY THE LAST USER MESSAGE in the above conversation:\n- First line must read 'Yes' or 'No'.\n- If yes, a second line must include a comma-separated list of tool indexes.\n"
|
||||
},
|
||||
{ "role": "user", "content": "how is the weather in seattle? Are there any tools can help?" }
|
||||
],
|
||||
"stream": false
|
||||
}
|
||||
|
||||
HTTP 200
|
||||
[Asserts]
|
||||
header "content-type" == "application/json"
|
||||
jsonpath "$.model" matches /^Arch-Function/
|
||||
jsonpath "$.usage" != null
|
||||
jsonpath "$.choices[0].message.content" matches /Yes/
|
||||
jsonpath "$.choices[0].message.role" == "assistant"
|
||||
Loading…
Add table
Add a link
Reference in a new issue