RustGLM for ChatGLM Rust SDK - Github 项目

高性能、高品质体验和可靠的 Rust 语言 ChatGLM SDK 自然语言处理功能

1. 准备开始

1.1 安装 Rust-up 可删减程序( 👇 此处仅显示 Windows 和 Android 文件)

Rust-up-Windows-x64-Installation

Rust-up-Windows-x32-Installation

Rust-up-aarch64-android-Installation

如果你是 Linux 用户 or MacOS 用户, 你可以点击这里进行查看: 用户安装手册



1️⃣ 安装后,请使用 命令行 检查 Rust 版本:

cargo -V

or

cargo --version

在这里插入图片描述


2️⃣ 然后就可以使用命令将库添加到自己的项目中:( 👉 2.1 调用和使用 Rust Crates.io 库的内容)

cargo add RustGLM

or use

RustGLM = "0.1.1"

在这里插入图片描述

您可能需要的其他 RustGLM 的文档: 👉 🔗 RustGLM Documation


1.2 Rust NTP 时间服务器

它通过互联网或局域网上的时间服务器提供高度准确和安全的时间信息,确保所有设备使用相同的时间至关重要。这里的应用是通过以下方式进行 JWT 身份验证:

pub fn time_sync() -> i64 {
    let client = SntpClient::new();
    let result = client.synchronize("ntp.aliyun.com").unwrap();

    let local_time: DateTime<Local> =
        DateTime::from(result.datetime().into_chrono_datetime().unwrap());

    let milliseconds = local_time.timestamp_millis() as i64;
    return milliseconds;
}

1.3 保存 API 密钥

保存 api 密钥并将其存储到本地文件中,该文件称为 chatglm_api_key.txt 文件:

const API_KEY_FILE: &str = "chatglm_api_key.txt";

    pub fn save_api_key(api_key: &str) {
        match File::create(API_KEY_FILE) {
            Ok(mut file) => {
                if let Err(e) = writeln!(file, "{}", api_key) {
                    eprintln!("Failed to write to file: {}", e);
                }
            }
            Err(e) => eprintln!("Failed to create file: {}", e),
        }
    }

加载 API 密钥:

pub fn load_api_key() -> Option<String> {
        match File::open(API_KEY_FILE) {
            Ok(file) => {
                let reader = BufReader::new(file);
                reader.lines().next().map(|line| line.unwrap_or_default())
            }
            Err(_) => None,
        }
    }

1.4 保存历史聊天记录

保存用户聊天内容和人工智能的历史聊天记录在 chatglm_history.json 文件.

const HISTORY_FILE: &str = "chatglm_history.json";

 pub fn add_history_to_file(&self, role: &str, content: &str) -> String {
        let json = self.create_json(role, content);

        if let Ok(mut file) = OpenOptions::new().write(true).append(true).open(&self.history_file_path) {
            if let Err(err) = writeln!(file, "{},", json) {
                eprintln!("Failed to write to history file: {}", err);
            }
        } else {
            eprintln!("Failed to open history file for writing");
        }

        json
    }

加载历史聊天记录在json文件:

pub fn load_history_from_file(&self) -> String {
        if let Ok(file) = File::open(&self.history_file_path) {
            let reader = BufReader::new(file);
            reader.lines().filter_map(Result::ok).collect()
        } else {
            eprintln!("Failed to open history file for reading");
            String::new()
        }
    }


2. 易于使用的 SDK

2.1 调用和使用 Rust Crates.io 库

使用这个 Rust 项目调用 SDK 的难度较低🤩。当你成功地把我的库添加到自己的项目的时候,再进行下面的示例。你输入问题以及关键字,控制台会输出且反馈 ChatGLM 来回答问题:

🚩输入关键字: 如果没有其他字符,将切换调用模式

序列号全名关键字
1Server-Sent EventsSSE, sse
2AsynchronousASYNC, Async, async
3SynchronousSYNC, Sync, sync

为自己的项目添加主函数的示例:

//默认使用流式传输调用

#[tokio::main]
async fn main() {
    let mut rust_glm = RustGLM::RustGLM::new().await;
    loop {
        println!("You:");
        let ai_response = rust_glm.rust_chat_glm().await;
        if ai_response.is_empty() {
            break;
        }
        println!("Liliya: {}", rust_glm.get_ai_response());
        println!();
    }
}

🚩 运行代码图片示例:

这里使用的是 VSCode IDE 在你第一次运行的时候会要求你输入 API 密钥 然后你再输入内容,左侧就会产生chatglm_api_key.txt 文件,当你只输入关键字内容,不会将你输入的内容存入聊天历史记录文件,比如示例中的 Async 的时候,会主动切换成异步请求(默认是 SSE 请求)。当你输入的内容非关键字的时候(含 exit 关键字) 会在左侧的文件栏生成一个chatglm_history.json 文件,这里面就是保存的你与人工智能的聊天历史记录,同理,如果你输入Sync 那么也会切换成同步请求。

在这里插入图片描述
在这里插入图片描述

总体下来,这个项目引入的三种请求方式应该还是比较简单的,目前的 BUG 会尽量修复🥳,也希望各位开发者对这个项目的支持!再次感谢🎉!


4.总结

感谢您打开我的项目,这是一个自主开发的使用 Rust 编程语言所开发的项目,目的是针对官方 SDK 的要求扩展不同的代码语言调用。我也在努力开发和更新这个项目,当然,我个人也会继续开发这个项目,我也更坚持开源的原则,让大家都能喜欢我的项目。最后,希望越来越多的人一起参与进来 🚀 感谢您看到最后! 😆👏

Logo

欢迎加入西安开发者社区!我们致力于为西安地区的开发者提供学习、合作和成长的机会。参与我们的活动,与专家分享最新技术趋势,解决挑战,探索创新。加入我们,共同打造技术社区!

更多推荐