Skip to content

Commit 16367d0

Browse files
authored
Merge pull request tjardoo#27 from tjardoo/assistant
Assistants API
2 parents 285221c + d9762f3 commit 16367d0

File tree

44 files changed

+792
-100
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+792
-100
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "openai_dive"
3-
version = "0.3.0"
3+
version = "0.3.1"
44
edition = "2021"
55
license = "MIT"
66
description = "OpenAI Dive is an unofficial async Rust library that allows you to interact with the OpenAI API."

README.md

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ More information: [set API key](#set-api-key), [add proxy](#add-proxy), [use mod
4949
- [List fine tuning events](#list-fine-tuning-events)
5050
- Moderation
5151
- [Create moderation](#create-moderation)
52+
- Assistants
53+
- [Assistants (beta)](#assistants-beta)
5254

5355
## Models
5456

@@ -602,9 +604,9 @@ async fn main() {
602604

603605
let client = Client::new(api_key);
604606

605-
let file_name = env::var("FILE_NAME").expect("FILE_NAME is not set in the .env file.");
607+
let file_id = env::var("FILE_ID").expect("FILE_ID is not set in the .env file.");
606608

607-
let result = client.files().delete(&file_name).await.unwrap();
609+
let result = client.files().delete(&file_id).await.unwrap();
608610

609611
println!("{:?}", result);
610612
}
@@ -629,9 +631,9 @@ async fn main() {
629631

630632
let client = Client::new(api_key);
631633

632-
let file_name = env::var("FILE_NAME").expect("FILE_NAME is not set in the .env file.");
634+
let file_id = env::var("FILE_ID").expect("FILE_ID is not set in the .env file.");
633635

634-
let result = client.files().retrieve(&file_name).await.unwrap();
636+
let result = client.files().retrieve(&file_id).await.unwrap();
635637

636638
println!("{:?}", result);
637639
}
@@ -656,9 +658,9 @@ async fn main() {
656658

657659
let client = Client::new(api_key);
658660

659-
let file_name = env::var("FILE_NAME").expect("FILE_NAME is not set in the .env file.");
661+
let file_id = env::var("FILE_ID").expect("FILE_ID is not set in the .env file.");
660662

661-
let result = client.files().retrieve_content(&file_name).await.unwrap();
663+
let result = client.files().retrieve_content(&file_id).await.unwrap();
662664

663665
println!("{:?}", result);
664666
}
@@ -687,11 +689,11 @@ async fn main() {
687689

688690
let client = Client::new(api_key);
689691

690-
let file_name = env::var("FILE_NAME").expect("FILE_NAME is not set in the .env file.");
692+
let file_id = env::var("FILE_ID").expect("FILE_ID is not set in the .env file.");
691693

692694
let parameters = CreateFineTuningJobParameters {
693695
model: "gpt-3.5-turbo-1106".to_string(),
694-
training_file: file_name,
696+
training_file: file_id,
695697
hyperparameters: None,
696698
suffix: None,
697699
validation_file: None,
@@ -865,6 +867,24 @@ async fn main() {
865867

866868
More information [Create moderation](https://platform.openai.com/docs/api-reference/moderations/create)
867869

870+
## Assistants (beta)
871+
872+
Build assistants that can call models and use tools to perform tasks.
873+
874+
For more information see the examples in the [examples/assistants](https://github.com/tjardoo/openai-client/tree/master/examples/assistants) directory.
875+
876+
- Create assistant
877+
- Retrieve assistant
878+
- Modify assistant
879+
- Delete assistant
880+
- List assistants
881+
- Create assistant file
882+
- Retrieve assistant file
883+
- Delete assistant file
884+
- List assistant files
885+
886+
More information [Assistants](https://platform.openai.com/docs/api-reference/assistants)
887+
868888
## General
869889

870890
### Set API key

examples/.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
/images/target
99
/files/target
1010
/fine_tuning/target
11+
/assistants/target
1112
/models/Cargo.lock
1213
/chat/Cargo.lock
1314
/audio/Cargo.lock
@@ -16,3 +17,4 @@
1617
/images/Cargo.lock
1718
/files/Cargo.lock
1819
/fine_tuning/Cargo.lock
20+
/assistants/Cargo.lock

examples/Cargo.toml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,10 @@ members = [
2525
"models/list_models",
2626
"models/retrieve_model",
2727
"moderations/create_moderation",
28+
"assistants/create_assistant",
29+
"assistants/retrieve_assistant",
30+
"assistants/modify_assistant",
31+
"assistants/delete_assistant",
32+
"assistants/list_assistants",
33+
"assistants/assistant_files",
2834
]

examples/assistants/Cargo.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[workspace]
2+
members = [
3+
"create_assistant",
4+
"retrieve_assistant",
5+
"modify_assistant",
6+
"delete_assistant",
7+
"list_assistants",
8+
"assistant_files",
9+
]
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
ASSISTANT_ID=asst_XXX
2+
FILE_ID=file-XXX
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[package]
2+
name = "assistant_files"
3+
version = "0.1.0"
4+
edition = "2021"
5+
publish = false
6+
7+
[dependencies]
8+
openai_dive = { path = "./../../../../openai-client" }
9+
tokio = { version = "1.0", features = ["full"] }
10+
dotenv = "0.15.0"
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
use dotenv::dotenv;
2+
use openai_dive::v1::{api::Client, resources::assistant::CreateAssistantFileParameters};
3+
use std::env;
4+
5+
#[tokio::main]
6+
async fn main() {
7+
dotenv().ok();
8+
9+
let api_key = env::var("OPENAI_API_KEY").expect("$OPENAI_API_KEY is not set");
10+
11+
let client = Client::new(api_key);
12+
13+
create_assistant_file(&client).await;
14+
15+
retrieve_assistant_file(&client).await;
16+
17+
list_assistant_files(&client).await;
18+
19+
delete_assistant_file(&client).await;
20+
}
21+
22+
pub async fn create_assistant_file(client: &Client) {
23+
let assistant_id = env::var("ASSISTANT_ID").expect("ASSISTANT_ID is not set in the .env file.");
24+
25+
let parameters = CreateAssistantFileParameters {
26+
file_id: env::var("FILE_ID").expect("FILE_ID is not set in the .env file."),
27+
};
28+
29+
let result = client
30+
.assistants()
31+
.create_file(&assistant_id, parameters)
32+
.await
33+
.unwrap();
34+
35+
println!("{:?}", result);
36+
}
37+
38+
pub async fn retrieve_assistant_file(client: &Client) {
39+
let assistant_id = env::var("ASSISTANT_ID").expect("ASSISTANT_ID is not set in the .env file.");
40+
41+
let file_id = env::var("FILE_ID").expect("FILE_ID is not set in the .env file.");
42+
43+
let result = client
44+
.assistants()
45+
.retrieve_file(&assistant_id, &file_id)
46+
.await
47+
.unwrap();
48+
49+
println!("{:?}", result);
50+
}
51+
52+
pub async fn list_assistant_files(client: &Client) {
53+
let assistant_id = env::var("ASSISTANT_ID").expect("ASSISTANT_ID is not set in the .env file.");
54+
55+
let result = client
56+
.assistants()
57+
.list_files(&assistant_id, None)
58+
.await
59+
.unwrap();
60+
61+
println!("{:?}", result);
62+
}
63+
64+
pub async fn delete_assistant_file(client: &Client) {
65+
let assistant_id = env::var("ASSISTANT_ID").expect("ASSISTANT_ID is not set in the .env file.");
66+
67+
let file_id = env::var("FILE_ID").expect("FILE_ID is not set in the .env file.");
68+
69+
let result = client
70+
.assistants()
71+
.delete_file(&assistant_id, &file_id)
72+
.await
73+
.unwrap();
74+
75+
println!("{:?}", result);
76+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[package]
2+
name = "create_assistant"
3+
version = "0.1.0"
4+
edition = "2021"
5+
publish = false
6+
7+
[dependencies]
8+
openai_dive = { path = "./../../../../openai-client" }
9+
tokio = { version = "1.0", features = ["full"] }

0 commit comments

Comments
 (0)