openai-toolable 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/examples/simple.rb +3 -4
- data/lib/openai/toolable/version.rb +1 -1
- data/lib/openai/toolable.rb +6 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c41c79bec1d11195ab214396b4b9d1f011585f3d8e27e093ee0e28d149630fb
|
4
|
+
data.tar.gz: bd0b91cdc281a50b2c5b2805d715f318eb0b7e58ca733d83c2093f5f26ef9bc4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ebb21547acbd24b2212db7a0942cc2be6c142a707a7e3bc60fc27075c0873c57ed8b48bb758282ba875a6ac86bd7dbc8e914d0514e058ddfc64cb9cef5a6984
|
7
|
+
data.tar.gz: 8b09995ec0e4d5ee9037d75478be3b170ea441c4b9f9bd01882e2e4de42ffbe81cf9e93ce598d01a907cbd05d6e514c1d4992ab370e64508af46004a410d5746
|
data/Gemfile.lock
CHANGED
data/examples/simple.rb
CHANGED
@@ -3,6 +3,7 @@ require "openai/toolable"
|
|
3
3
|
# Define a tool
|
4
4
|
weather_tool = Openai::Toolable::ToolFactory.build(
|
5
5
|
name: "get_weather",
|
6
|
+
type: "function",
|
6
7
|
description: "Get the current weather in a given location",
|
7
8
|
parameters: [
|
8
9
|
{ name: "location", type: :string, description: "The city and state, e.g. San Francisco, CA" },
|
@@ -18,15 +19,13 @@ tool_handler.register(
|
|
18
19
|
)
|
19
20
|
|
20
21
|
# Create a client
|
21
|
-
client = OpenAI::Client.new
|
22
|
+
client = OpenAI::Client.new(api_key: OPENAI_API_KEY)
|
22
23
|
|
23
24
|
# Create a chat completion
|
24
|
-
response = client.chat(
|
25
|
-
parameters: {
|
25
|
+
response = client.chat.completions.create(
|
26
26
|
model: "gpt-3.5-turbo",
|
27
27
|
messages: [{ role: "user", content: "What's the weather like in Boston?" }],
|
28
28
|
tools: [weather_tool.to_json]
|
29
|
-
}
|
30
29
|
)
|
31
30
|
|
32
31
|
# Handle the response
|
data/lib/openai/toolable.rb
CHANGED
@@ -7,10 +7,11 @@ module Openai
|
|
7
7
|
class Error < StandardError; end
|
8
8
|
|
9
9
|
class Tool
|
10
|
-
attr_reader :name, :description, :parameters
|
10
|
+
attr_reader :name, :type, :description, :parameters
|
11
11
|
|
12
|
-
def initialize(name:, description:, parameters: [])
|
12
|
+
def initialize(name:, type:, description:, parameters: [])
|
13
13
|
@name = name
|
14
|
+
@type = type
|
14
15
|
@description = description
|
15
16
|
@parameters = parameters.map do |param|
|
16
17
|
Parameter.new(
|
@@ -25,6 +26,7 @@ module Openai
|
|
25
26
|
def to_json
|
26
27
|
{
|
27
28
|
name: name,
|
29
|
+
type: type,
|
28
30
|
description: description,
|
29
31
|
parameters: {
|
30
32
|
type: :object,
|
@@ -38,8 +40,8 @@ module Openai
|
|
38
40
|
end
|
39
41
|
|
40
42
|
class ToolFactory
|
41
|
-
def self.build(name:, description:, parameters: [])
|
42
|
-
Tool.new(name: name, description: description, parameters: parameters)
|
43
|
+
def self.build(name:, type:, description:, parameters: [])
|
44
|
+
Tool.new(name: name, type: type, description: description, parameters: parameters)
|
43
45
|
end
|
44
46
|
end
|
45
47
|
end
|