mirror of
https://github.com/ollama/ollama.git
synced 2026-01-29 07:12:03 +03:00
* preserve tool definition and call JSON ordering This is another iteration of <https://github.com/ollama/ollama/pull/12518>, but this time we've simplified things by relaxing the competing requirements of being compatible AND order-preserving with templates (vs. renderers). We maintain backwards compatibility at the cost of not guaranteeing order for templates. We plan on moving more and more models to renderers, which have been updated to use these new data types, and additionally we could add an opt-in way of templates getting an order-preserved list (e.g., via sibling template vars) * orderedmap_test: remove testify
37 lines
1010 B
Go
37 lines
1010 B
Go
package renderers
|
|
|
|
import "github.com/ollama/ollama/api"
|
|
|
|
// testPropsMap creates a ToolPropertiesMap from a map (convenience function for tests, order not preserved)
|
|
func testPropsMap(m map[string]api.ToolProperty) *api.ToolPropertiesMap {
|
|
props := api.NewToolPropertiesMap()
|
|
for k, v := range m {
|
|
props.Set(k, v)
|
|
}
|
|
return props
|
|
}
|
|
|
|
// testArgs creates ToolCallFunctionArguments from a map (convenience function for tests, order not preserved)
|
|
func testArgs(m map[string]any) api.ToolCallFunctionArguments {
|
|
args := api.NewToolCallFunctionArguments()
|
|
for k, v := range m {
|
|
args.Set(k, v)
|
|
}
|
|
return args
|
|
}
|
|
|
|
// orderedArg represents a key-value pair for ordered argument creation
|
|
type orderedArg struct {
|
|
Key string
|
|
Value any
|
|
}
|
|
|
|
// testArgsOrdered creates ToolCallFunctionArguments with a specific key order
|
|
func testArgsOrdered(pairs []orderedArg) api.ToolCallFunctionArguments {
|
|
args := api.NewToolCallFunctionArguments()
|
|
for _, p := range pairs {
|
|
args.Set(p.Key, p.Value)
|
|
}
|
|
return args
|
|
}
|