Skip to content

Commit c054690

Browse files
author
Matthijs van Otterdijk
committed
make the key configurable with OPENAI_KEY env var
1 parent 815e96e commit c054690

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

src/main.rs

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ struct Args {
3434
enum Commands {
3535
Serve {
3636
#[arg(short, long)]
37-
key: String,
37+
key: Option<String>,
3838
#[arg(short, long)]
3939
directory: String,
4040
#[arg(short, long, default_value_t = 8080)]
@@ -44,7 +44,7 @@ enum Commands {
4444
},
4545
Load {
4646
#[arg(short, long)]
47-
key: String,
47+
key: Option<String>,
4848
#[arg(short, long)]
4949
commit: String,
5050
#[arg(long)]
@@ -58,21 +58,21 @@ enum Commands {
5858
},
5959
Embed {
6060
#[arg(short, long)]
61-
key: String,
61+
key: Option<String>,
6262
#[arg(short, long)]
6363
string: String,
6464
},
6565
Compare {
6666
#[arg(short, long)]
67-
key: String,
67+
key: Option<String>,
6868
#[arg(long)]
6969
s1: String,
7070
#[arg(long)]
7171
s2: String,
7272
},
7373
Compare2 {
7474
#[arg(short, long)]
75-
key: String,
75+
key: Option<String>,
7676
#[arg(long)]
7777
s1: String,
7878
#[arg(long)]
@@ -82,7 +82,7 @@ enum Commands {
8282
},
8383
Test {
8484
#[arg(short, long)]
85-
key: String,
85+
key: Option<String>,
8686
},
8787
}
8888

@@ -93,6 +93,11 @@ enum DistanceVariant {
9393
Scalar,
9494
}
9595

96+
fn key_or_env(k: Option<String>) -> String {
97+
k.or_else(|| std::env::var("OPENAI_KEY").ok())
98+
.expect("No OpenAI key given")
99+
}
100+
96101
#[tokio::main]
97102
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
98103
let args = Args::parse();
@@ -102,13 +107,13 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
102107
directory,
103108
port,
104109
size,
105-
} => server::serve(directory, port, size, key).await?,
110+
} => server::serve(directory, port, size, key_or_env(key)).await?,
106111
Commands::Embed { key, string } => {
107-
let v = openai::embeddings_for(&key, &[string]).await?;
112+
let v = openai::embeddings_for(&key_or_env(key), &[string]).await?;
108113
eprintln!("{:?}", v);
109114
}
110115
Commands::Compare { key, s1, s2 } => {
111-
let v = openai::embeddings_for(&key, &[s1, s2]).await?;
116+
let v = openai::embeddings_for(&key_or_env(key), &[s1, s2]).await?;
112117
let p1 = Point::Mem {
113118
vec: Box::new(v[0]),
114119
};
@@ -127,7 +132,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
127132
s2,
128133
variant,
129134
} => {
130-
let v = openai::embeddings_for(&key, &[s1, s2]).await?;
135+
let v = openai::embeddings_for(&key_or_env(key), &[s1, s2]).await?;
131136
let p1 = &v[0];
132137
let p2 = &v[1];
133138
let distance = match variant {
@@ -139,7 +144,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
139144
}
140145
Commands::Test { key } => {
141146
let v = openai::embeddings_for(
142-
&key,
147+
&key_or_env(key),
143148
&[
144149
"king".to_string(),
145150
"man".to_string(),
@@ -179,6 +184,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
179184
})
180185
.chunks(100);
181186

187+
let key = key_or_env(key);
182188
for structs in opstream {
183189
let structs: Vec<_> = structs.collect();
184190
let new_ops =

0 commit comments

Comments
 (0)