Skip to content

Commit 94c47c1

Browse files
authored
Merge pull request #18 from Shifta-Robel/adaptor_crate_support
support components from external crates with the macros, a few more adaptor crates in the workspace, more docs ...
2 parents 8b39dfa + 93951c4 commit 94c47c1

File tree

44 files changed

+3129
-1017
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

+3129
-1017
lines changed

Cargo.lock

Lines changed: 637 additions & 53 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,8 @@ resolver="2"
44
members = [
55
"core/",
66
"proc_macros/",
7+
"integrations/completion_providers/seedframe_anthropic/",
8+
"integrations/embedding_providers/seedframe_voyageai/",
9+
"integrations/seedframe_webscraper/",
10+
"integrations/vector_stores/seedframe_pinecone/"
711
]

README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@ You could also extract structured output from the llms, the target types need to
3838
Like the tools the description for the type and for it's fields will get extracted from the docs and get passed to the llm, but its not an error to leave them undocumented.
3939

4040
```rust
41-
#[client(provider = "openai", model = "gpt-4o-mini", tools("analyze"))]
41+
use seedframe::prelude::*;
42+
use seedframe::providers::completions::OpenAI;
43+
44+
#[client(provider = "OpenAI", tools("analyze"))]
4245
struct ToolClient;
4346

4447
/// Perform sentiment analysis on text
@@ -79,6 +82,7 @@ async fn main() -> Result<()> {
7982
### Building a simple RAG
8083
```rust
8184
use seedframe::prelude::*;
85+
use seedframe::providers::{completions::OpenAI, embeddings::OpenAIEmbedding};
8286

8387
// Declare file loader that doesnt check for updates, loading files that match the glob pattern
8488
#[loader(kind = "FileOnceLoader", path = "/tmp/data/**/*.txt")]
@@ -87,15 +91,15 @@ pub struct MyLoader;
8791
#[vector_store(kind = "InMemoryVectorStore")]
8892
pub struct MyVectorStore;
8993

90-
#[embedder(provider = "openai", model = "text-embedding-3-small")]
94+
#[embedder(provider = "OpenAIEmbedding")]
9195
struct MyEmbedder {
9296
#[vector_store]
9397
my_vector_store: MyVectorStore,
9498
#[loader]
9599
my_loader: MyLoader,
96100
}
97101

98-
#[client(provider = "openai", model = "gpt-4o-mini")]
102+
#[client(provider = "OpenAI", config = r#"{"model": "gpt-4o-mini"}"#)]
99103
struct MyClient {
100104
#[embedder]
101105
my_embedder: MyEmbedder,

core/Cargo.toml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ walkdir = "2.5.0"
1616
seedframe_macros = { path = "../proc_macros"}
1717
notify = "8.0.0"
1818
tracing = "0.1.41"
19-
pinecone-sdk = {version ="0.1.2", optional = true}
2019
schemars = "0.8.22"
2120
thiserror = "2.0.12"
2221
dashmap = "6.1.0"
@@ -26,10 +25,4 @@ tempfile = "3.16.0"
2625
tracing-subscriber = "0.3.19"
2726

2827
[features]
29-
pinecone = ["pinecone-sdk"]
3028
pdf = ["pdf-extract"]
31-
32-
[[example]]
33-
name = "agent_with_pinecone"
34-
path = "examples/agent_with_pinecone.rs"
35-
required-features = ["pinecone"]

core/examples/advanced_tool_calls.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
use schemars::JsonSchema;
21
use seedframe::prelude::*;
2+
use seedframe::providers::completions::OpenAI;
3+
4+
use schemars::JsonSchema;
35
use serde::{Deserialize, Serialize};
46
use std::fmt::Display;
57

68
#[client(
7-
provider = "openai",
8-
model = "gpt-4o-mini",
9+
provider = "OpenAI",
10+
config = "{\"model\": \"gpt-4o-mini\"}",
911
tools("schedule_meeting", "convert_temperature")
1012
)]
1113
struct AdvancedClient;

core/examples/agent_with_pinecone.rs

Lines changed: 0 additions & 37 deletions
This file was deleted.

core/examples/extractors.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
use schemars::JsonSchema;
12
use seedframe::prelude::*;
3+
use seedframe::providers::completions::OpenAI;
24
use serde::Deserialize;
3-
use schemars::JsonSchema;
45

5-
#[client(provider = "openai",model = "gpt-4o-mini")]
6+
#[client(provider = "OpenAI")]
67
struct ExtractorClient;
78

89
#[allow(unused)]
@@ -33,20 +34,19 @@ struct MeetingDetails {
3334

3435
#[tokio::main]
3536
async fn main() -> Result<(), seedframe::error::Error> {
36-
let mut client = ExtractorClient::build("You are a helpful assistant".to_string()).await;
37+
let mut client = ExtractorClient::build("You are a helpful assistant").await;
3738

3839
let person_text = "My colleague John Doe is 28 years old. He works as a software engineer and enjoys hiking, reading, and playing chess, his email is [email protected]";
39-
let person = client.prompt(person_text)
40-
.extract::<Person>()
41-
.await?;
40+
let person = client.prompt(person_text).extract::<Person>().await?;
4241
println!("Extracted Person:\n{person:#?}\n");
4342

4443
let meeting_text = "We have a team meeting scheduled for 2026-2-15 at 11:30. \
4544
Purpose is quarterly planning. Attendees include: \
4645
John Doe (35, Product Manager, hobbies: golf), \
4746
Alice Smith (29, hobbies: painting, yoga), \
4847
and Bob Johnson (42, CTO).";
49-
let meeting = client.prompt(meeting_text)
48+
let meeting = client
49+
.prompt(meeting_text)
5050
.extract::<MeetingDetails>()
5151
.await?;
5252
println!("Extracted Meeting:\n{meeting:#?}\n");

core/examples/simple_client.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
use seedframe::prelude::*;
2+
use seedframe::providers::{completions::OpenAI, embeddings::OpenAIEmbedding};
3+
use seedframe::vector_store::InMemoryVectorStore;
24

35
#[loader(kind = "FileOnceLoader", path = "/tmp/data/**/*.txt")]
46
pub struct MyLoader;
57

6-
#[vector_store(kind = "InMemoryVectorStore")]
8+
#[vector_store(store = "InMemoryVectorStore")]
79
pub struct MyVectorStore;
810

9-
#[embedder(provider = "openai", model = "text-embedding-3-small")]
11+
#[embedder(provider = "OpenAIEmbedding")]
1012
struct MyEmbedder {
1113
#[vector_store]
1214
my_vector_store: MyVectorStore,
1315
#[loader]
1416
my_loader: MyLoader,
1517
}
1618

17-
#[client(provider = "openai", model = "gpt-4o-mini")]
19+
#[client(provider = "OpenAI")]
1820
struct MyClient {
1921
#[embedder]
2022
my_embedder: MyEmbedder,
@@ -23,7 +25,7 @@ struct MyClient {
2325
#[tokio::main]
2426
async fn main() {
2527
let mut c = MyClient::build(
26-
"Respond with the definition and language of origin for the word the user prompts you with, you'll be given a context to use for the words, if you cant get the meaning for the word from the context reply with a \"I dont know\"".to_string(),
28+
"Respond with the definition and language of origin for the word the user prompts you with, you'll be given a context to use for the words, if you cant get the meaning for the word from the context reply with a \"I dont know\"",
2729
)
2830
.await;
2931
// delay for the vector store to finish upserting the loaded resource before the first prompt

core/examples/simple_tool_calls.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
use seedframe::prelude::*;
2+
use seedframe::providers::completions::OpenAI;
23

34
#[client(
4-
provider = "openai",
5-
model = "gpt-4o-mini",
5+
provider = "OpenAI",
6+
config = "{\"model\": \"gpt-4o-mini\"}",
67
tools("capitalize", "greet")
78
)]
89
struct SimpleClient;
@@ -35,7 +36,7 @@ struct AppState {
3536

3637
#[tokio::main]
3738
async fn main() -> Result<(), seedframe::error::Error> {
38-
let mut client = SimpleClient::build("You are a helpful assistant".to_string())
39+
let mut client = SimpleClient::build("You are a helpful assistant")
3940
.await
4041
.with_state(AppState { some_number: 3 })?;
4142

0 commit comments

Comments
 (0)