diff --git a/Package.resolved b/Package.resolved index 343f4c3..ef92165 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "b32fb03da18c6905b841dca38d2590d94af7c5abbf7c990db4f146b8c8d2135b", + "originHash" : "203e6544835d84bd20fbe6f01f08082aa5b02cfe5ebc96f023ca73a49208aa27", "pins" : [ { "identity" : "documentationcomment", @@ -15,8 +15,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/FunctionCalling/FunctionCalling", "state" : { - "revision" : "24c07c25d57a66b0e34af8d1ffb1192c2b1313a3", - "version" : "0.4.0" + "revision" : "cd9c2c3d70e10c63e3da670718685825727b52ce", + "version" : "0.5.0" } }, { @@ -24,8 +24,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/groue/GRMustache.swift", "state" : { - "revision" : "c4ee40ef49ae523b06fa470b8d27185ec027330d", - "version" : "5.0.1" + "revision" : "811326995377af216b970ae3afb0645ca94986c8", + "version" : "6.0.0" } }, { @@ -33,8 +33,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/MacPaw/OpenAI", "state" : { - "revision" : "843e087929aa806adb611dbca93f9a4a7f28be04", - "version" : "0.3.0" + "revision" : "40f3d6cdb5a2ad72369984a8e0e99a28c6e46f47", + "version" : "0.4.2" } }, { diff --git a/Package.swift b/Package.swift index c0de370..d2ef209 100644 --- a/Package.swift +++ b/Package.swift @@ -17,7 +17,7 @@ let package = Package( ], dependencies: [ .package(url: "https://github.com/FunctionCalling/FunctionCalling", from: "0.5.0"), - .package(url: "https://github.com/MacPaw/OpenAI", from: "0.4.1") + .package(url: "https://github.com/MacPaw/OpenAI", from: "0.4.3") ], targets: [ // Targets are the basic building blocks of a package, defining a module or a test suite. diff --git a/Sources/FunctionCalling-MacPaw-OpenAI/Extension/ChatQuery+Extension.swift b/Sources/FunctionCalling-MacPaw-OpenAI/Extension/ChatQuery+Extension.swift index 9884411..12c2eb0 100644 --- a/Sources/FunctionCalling-MacPaw-OpenAI/Extension/ChatQuery+Extension.swift +++ b/Sources/FunctionCalling-MacPaw-OpenAI/Extension/ChatQuery+Extension.swift @@ -19,54 +19,25 @@ extension ChatQuery.ChatCompletionToolParam.FunctionDefinition { self.init( name: tool.name, description: tool.description, - parameters: FunctionParameters(inputSchema: tool.inputSchema) + parameters: AnyJSONSchema(inputSchema: tool.inputSchema) ) } } -extension ChatQuery.ChatCompletionToolParam.FunctionDefinition.FunctionParameters { +extension AnyJSONSchema { init(inputSchema: InputSchema) { - self.init( - type: JSONType(dataType: inputSchema.type), - properties: inputSchema.properties?.mapValues { Property(inputSchema: $0) }, - required: inputSchema.requiredProperties, - enum: inputSchema.enumValues - ) - } -} - -extension ChatQuery.ChatCompletionToolParam.FunctionDefinition.FunctionParameters.Property.Items { - init?(inputSchema: InputSchema?) { - guard let inputSchema else { - return nil - } - - self.init( - type: JSONType(dataType: inputSchema.type), - properties: inputSchema.properties?.mapValues { - ChatQuery.ChatCompletionToolParam.FunctionDefinition.FunctionParameters.Property(inputSchema: $0) - }, - enum: inputSchema.enumValues - ) - } -} - -extension ChatQuery.ChatCompletionToolParam.FunctionDefinition.FunctionParameters.Property { - init(inputSchema: InputSchema) { - self.init( - type: JSONType(dataType: inputSchema.type), - description: inputSchema.description, - format: inputSchema.format, - items: Items(inputSchema: inputSchema.items), - required: inputSchema.requiredProperties, - enum: inputSchema.enumValues - ) + self.init(fields: [ + .type(JSONSchemaInstanceType(type: inputSchema.type)), + .properties(inputSchema.properties?.mapValues { AnyJSONSchema(inputSchema: $0) } ?? [:]), + .required(inputSchema.requiredProperties ?? []), + .enumValues(inputSchema.enumValues ?? []) + ]) } } -extension ChatQuery.ChatCompletionToolParam.FunctionDefinition.FunctionParameters.JSONType { - init(dataType: InputSchema.DataType) { - switch dataType { +extension JSONSchemaInstanceType { + init(type: InputSchema.DataType) { + switch type { case .string: self = .string case .number: