Skip to content

Commit 543b0e7

Browse files
committed
WIP: clean-up
Signed-off-by: Aminu Oluwaseun Joshua <[email protected]>
1 parent 38c2c5d commit 543b0e7

File tree

3 files changed

+248
-160
lines changed

3 files changed

+248
-160
lines changed

crates/llm-remote-http/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use crate::{default::DefaultAgentEngine, open_ai::OpenAIAgentEngine};
77

88
mod default;
99
mod open_ai;
10+
mod schema;
1011

1112
#[derive(Clone)]
1213
pub enum Agent {
Lines changed: 13 additions & 160 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
1-
use std::fmt::Display;
2-
31
use reqwest::{
42
header::{HeaderMap, HeaderValue},
53
Body, Client, Url,
64
};
75
use serde::Serialize;
86
use spin_world::v2::llm::{self as wasi_llm};
97

10-
use crate::{EmbeddingResponseBody, InferResponseBody};
8+
use crate::{
9+
schema::{EmbeddingModels, EncodingFormat, Message, Model, Role},
10+
EmbeddingResponseBody, InferResponseBody,
11+
};
1112

1213
pub(crate) struct OpenAIAgentEngine;
1314

@@ -38,15 +39,13 @@ impl OpenAIAgentEngine {
3839
tracing::info!("Sending remote inference request to {chat_url}");
3940

4041
let body = CreateChatCompletionRequest {
41-
messages: vec![Message {
42-
role: Role::User, // TODO: Joshua: make customizable
43-
content: prompt,
44-
}],
45-
model: model.into(),
42+
// TODO: Joshua: make Role customizable
43+
messages: vec![Message::new(Role::User, prompt)],
44+
model: model.as_str().try_into()?,
4645
max_completion_tokens: Some(params.max_tokens),
4746
frequency_penalty: Some(params.repeat_penalty), // TODO: Joshua: change to frequency_penalty
48-
reasoning_effort: Some(ReasoningEffort::Medium),
49-
verbosity: Some(Verbosity::Low),
47+
reasoning_effort: None,
48+
verbosity: None,
5049
};
5150

5251
let resp = client
@@ -87,7 +86,7 @@ impl OpenAIAgentEngine {
8786

8887
let body = CreateEmbeddingRequest {
8988
input: data,
90-
model: EmbeddingModel::Custom(model),
89+
model: model.as_str().try_into()?,
9190
encoding_format: None,
9291
dimensions: None,
9392
user: None,
@@ -126,9 +125,9 @@ struct CreateChatCompletionRequest {
126125
#[serde(skip_serializing_if = "Option::is_none")]
127126
frequency_penalty: Option<f32>,
128127
#[serde(skip_serializing_if = "Option::is_none")]
129-
reasoning_effort: Option<ReasoningEffort>,
128+
reasoning_effort: Option<String>,
130129
#[serde(skip_serializing_if = "Option::is_none")]
131-
verbosity: Option<Verbosity>,
130+
verbosity: Option<String>,
132131
}
133132

134133
impl From<CreateChatCompletionRequest> for Body {
@@ -137,122 +136,10 @@ impl From<CreateChatCompletionRequest> for Body {
137136
}
138137
}
139138

140-
#[derive(Serialize, Debug)]
141-
enum Verbosity {
142-
Low,
143-
_Medium,
144-
_High,
145-
}
146-
147-
#[derive(Serialize, Debug)]
148-
enum ReasoningEffort {
149-
_Minimal,
150-
_Low,
151-
Medium,
152-
_High,
153-
}
154-
155-
impl Display for ReasoningEffort {
156-
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
157-
match self {
158-
ReasoningEffort::_Minimal => write!(f, "minimal"),
159-
ReasoningEffort::_Low => write!(f, "low"),
160-
ReasoningEffort::Medium => write!(f, "medium"),
161-
ReasoningEffort::_High => write!(f, "high"),
162-
}
163-
}
164-
}
165-
166-
#[derive(Serialize, Debug)]
167-
enum Model {
168-
GPT5,
169-
GPT5Mini,
170-
GPT5Nano,
171-
GPT5Chat,
172-
GPT45,
173-
GPT41,
174-
GPT41Mini,
175-
GPT41Nano,
176-
GPT4,
177-
GPT4o,
178-
GPT4oMini,
179-
O4Mini,
180-
O3,
181-
O1,
182-
}
183-
184-
impl From<String> for Model {
185-
fn from(value: String) -> Self {
186-
match value.as_str() {
187-
"gpt-5" => Model::GPT5,
188-
"gpt-5-mini" => Model::GPT5Mini,
189-
"gpt-5-nano" => Model::GPT5Nano,
190-
"gpt-5-chat" => Model::GPT5Chat,
191-
"gpt-4.5" => Model::GPT45,
192-
"gpt-4.1" => Model::GPT41,
193-
"gpt-4.1-mini" => Model::GPT41Mini,
194-
"gpt-4.1-nano" => Model::GPT41Nano,
195-
"gpt-4" => Model::GPT4,
196-
"gpt-4o" => Model::GPT4o,
197-
"gpt-4o-mini" => Model::GPT4oMini,
198-
"o4-mini" => Model::O4Mini,
199-
"o3" => Model::O3,
200-
"o1" => Model::O1,
201-
_ => Model::GPT4,
202-
}
203-
}
204-
}
205-
206-
impl Display for Model {
207-
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
208-
match self {
209-
Model::GPT5 => write!(f, "gpt-5"),
210-
Model::GPT5Mini => write!(f, "gpt-5-mini"),
211-
Model::GPT5Nano => write!(f, "gpt-5-nano"),
212-
Model::GPT5Chat => write!(f, "gpt-5-chat"),
213-
Model::GPT45 => write!(f, "gpt-4.5"),
214-
Model::GPT41 => write!(f, "gpt-4.1"),
215-
Model::GPT41Mini => write!(f, "gpt-4.1-mini"),
216-
Model::GPT41Nano => write!(f, "gpt-4.1-nano"),
217-
Model::GPT4 => write!(f, "gpt-4"),
218-
Model::GPT4o => write!(f, "gpt-4o"),
219-
Model::GPT4oMini => write!(f, "gpt-4o-mini"),
220-
Model::O4Mini => write!(f, "o4-mini"),
221-
Model::O3 => write!(f, "o3"),
222-
Model::O1 => write!(f, "o1"),
223-
}
224-
}
225-
}
226-
227-
#[derive(Serialize, Debug)]
228-
struct Message {
229-
role: Role,
230-
content: String,
231-
}
232-
233-
#[derive(Serialize, Debug)]
234-
enum Role {
235-
_System,
236-
User,
237-
_Assistant,
238-
_Tool,
239-
}
240-
241-
impl Display for Role {
242-
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
243-
match self {
244-
Role::_System => write!(f, "system"),
245-
Role::User => write!(f, "user"),
246-
Role::_Assistant => write!(f, "assistant"),
247-
Role::_Tool => write!(f, "tool"),
248-
}
249-
}
250-
}
251-
252139
#[derive(Serialize, Debug)]
253140
pub struct CreateEmbeddingRequest {
254141
input: Vec<String>,
255-
model: EmbeddingModel,
142+
model: EmbeddingModels,
256143
#[serde(skip_serializing_if = "Option::is_none")]
257144
encoding_format: Option<EncodingFormat>,
258145
#[serde(skip_serializing_if = "Option::is_none")]
@@ -266,37 +153,3 @@ impl From<CreateEmbeddingRequest> for Body {
266153
Body::from(serde_json::to_string(&val).unwrap())
267154
}
268155
}
269-
270-
#[derive(Serialize, Debug)]
271-
enum EncodingFormat {
272-
_Float,
273-
_Base64,
274-
}
275-
276-
impl Display for EncodingFormat {
277-
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
278-
match self {
279-
EncodingFormat::_Float => write!(f, "float"),
280-
EncodingFormat::_Base64 => write!(f, "base64"),
281-
}
282-
}
283-
}
284-
285-
#[derive(Serialize, Debug)]
286-
enum EmbeddingModel {
287-
_TextEmbeddingAda002,
288-
_TextEmbedding3Small,
289-
_TextEmbedding3Large,
290-
Custom(String),
291-
}
292-
293-
impl Display for EmbeddingModel {
294-
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
295-
match self {
296-
EmbeddingModel::_TextEmbeddingAda002 => write!(f, "text-embedding-ada-002"),
297-
EmbeddingModel::_TextEmbedding3Small => write!(f, "text-embedding-3-small"),
298-
EmbeddingModel::_TextEmbedding3Large => write!(f, "text-embedding-3-large"),
299-
EmbeddingModel::Custom(model) => write!(f, "{model}"),
300-
}
301-
}
302-
}

0 commit comments

Comments
 (0)