Skip to content

Commit 2958a73

Browse files
Merge pull request #13 from patentfield/tools
Add support tools
2 parents 5b09686 + e4812a6 commit 2958a73

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,34 @@ end
6464

6565
`force_encoding` is preferred to avoid JSON parsing issue when Cohere returns emoticon.
6666

67+
`chat` supports Tool use (function calling).
68+
69+
```ruby
70+
tools = [
71+
{
72+
name: "query_daily_sales_report",
73+
description: "Connects to a database to retrieve overall sales volumes and sales information for a given day.",
74+
parameter_definitions: {
75+
day: {
76+
description: "Retrieves sales data for this day, formatted as YYYY-MM-DD.",
77+
type: "str",
78+
required: true
79+
}
80+
}
81+
}
82+
]
83+
84+
message = "Can you provide a sales summary for 29th September 2023, and also give me some details about the products in the 'Electronics' category, for example their prices and stock levels?"
85+
86+
client.chat(
87+
model: model,
88+
message: message,
89+
tools: tools,
90+
)
91+
```
92+
93+
94+
6795
### Embed
6896

6997
```ruby

lib/cohere/client.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ def chat(
3131
p: nil,
3232
frequency_penalty: nil,
3333
presence_penalty: nil,
34+
tools: [],
3435
&block
3536
)
3637
response = connection.post("chat") do |req|
@@ -55,6 +56,7 @@ def chat(
5556
req.body[:p] = p if p
5657
req.body[:frequency_penalty] = frequency_penalty if frequency_penalty
5758
req.body[:presence_penalty] = presence_penalty if presence_penalty
59+
req.body[:tools] = tools if tools
5860
end
5961
response.body
6062
end

0 commit comments

Comments
 (0)