-
-
Save CGamesPlay/dd4f108f27e2eec145eedf5c717318f5 to your computer and use it in GitHub Desktop.
Public domain, use as you wish. Attribution appreciated but not required.
I understand. Thank you for your response.
Great!! How did you find out FUNCTION_OVERHEAD? I wonder where it says publicly using this prompts for the function calling
See In [58]. The model returned it.
Thanks for great help.
Great work
Neat!
Thank you very much!
a few updates:
...
# `json.dumps(o, ensure_ascii=False)` to support Japanese and Chinese.
def format_enum(schema, indent):
return " | ".join(json.dumps(o, ensure_ascii=False) for o in schema["enum"])
...
# Up to December 16, 2023, after multiple tests, the FUNCTION_OVERHEAD should be 12.
FUNCTION_OVERHEAD = 12
...
I applied your ensure_ascii=False
change, but I disagree about your FUNCTION_OVERHEAD
change. Instead, OpenAI appears to now be formatting integers as "1" instead of "1.0".
def format_default(schema):
v = schema["default"]
if schema["type"] == "number":
return f"{v:.0f}" if float(v).is_integer() else str(v)
else:
return str(v)
The gist is updated with these changes (tests still pass).
Amazing work! The latest gpt-3.5-turbo and gpt-4-turbo add support for parallel tool calls by injecting an extra tool. Here is the namespace and description I obtained from the OpenAI's API:
(continuation from the normal functions namespace)
// namespace functions
## multi_tool_use
// This tool serves as a wrapper for utilizing multiple tools. Each tool that can be used must be specified in the tool sections. Only tools in the functions namespace are permitted.
// Ensure that the parameters provided to each tool are valid according to that tool's specification.
namespace multi_tool_use {
// Use this function to run multiple tools simultaneously, but only if they can operate in parallel. Do this even if the prompt suggests using the tools sequentially.
type parallel = (_: {
// The tools to be executed in parallel. NOTE: only functions tools are permitted
tool_uses: {
// The name of the tool to use. The format should either be just the name of the tool, or in the format namespace.function_name for plugin and function tools.
recipient_name: string,
// The parameters to pass to the tool. Ensure these are valid according to the tool's own specifications.
parameters: object,
}[],
}) => any;
Could you please tell me about the license of this code?