< 返回版块

Mike Tang 发表于 2025-01-13 18:50

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

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页