rig - 构建可扩展、模块化且高效的 LLM 驱动应用程序

Rig 是一个 Rust 库,用于构建可扩展、模块化且高效的 LLM 驱动应用程序。

您可以在官方文档和 crate API 参考中找到更多信息。

  • 全面支持 LLM 补全和嵌入式工作流

  • 简洁但强大的抽象层,兼容主流 LLM 提供商(如 OpenAI、Cohere)和向量存储(如 MongoDB、内存存储)

  • 轻量集成:通过极少的样板代码即可将 LLM 无缝集成到您的应用中

use rig::{completion::Prompt, providers::openai};

#[tokio::main]
async fn main() {
    // Create OpenAI client and model
    // This requires the `OPENAI_API_KEY` environment variable to be set.
    let openai_client = openai::Client::from_env();

    let gpt4 = openai_client.agent("gpt-4").build();

    // Prompt the model and print its response
    let response = gpt4
        .prompt("Who are you?")
        .await
        .expect("Failed to prompt GPT-4");

    println!("GPT-4: {response}");
}

https://github.com/0xPlaygrounds/rig

Statum - 构建有限状态机的零样板 Rust 库

Statum 是一个用于构建有限状态机的零样板 Rust 库,支持编译时状态转换验证。

为什么选择 Statum?

  • 编译时安全:状态转换在编译阶段验证,确保无非法转换。

  • 简洁的宏:使用简洁的宏定义状态和状态机,减少样板代码。

  • 状态特定数据:轻松添加和访问与特定状态绑定的数据。

  • 持久化友好:可从外部数据源无缝重建状态机。

use statum::{state, machine};

#[state]
pub enum TaskState {
    New,
    InProgress,
    Complete,
}

#[machine]
struct Task<S: TaskState> {
    id: String,
    name: String,
}

impl Task<New> {
    fn start(self) -> Task<InProgress> {
        self.transition()
    }
}

impl Task<InProgress> {
    fn complete(self) -> Task<Complete> {
        self.transition()
    }
}

fn main() {
    let task = Task::new("task-1".to_owned(), "Important Task".to_owned())
        .start()
        .complete();
}

https://github.com/eboody/statum

--

From 日报小组 Mike

社区学习交流平台订阅:

  • Rustcc论坛: 支持rss

  • 微信公众号:Rust语言中文社区

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐