Rig接入ModelScope API极简搭免费Agent

16 阅读4分钟

上次写了 用Rig+本地大模型,分分钟跑通专属Agent,有的朋友没有本地资源,这回将带大家用Rust+Rig Agent 框架,快速接入ModelScope 免费推理 API,搭建可直接使用的 AI Agent,同时实现调用额度实时解析与展示,零成本、开箱即用。


1. 📋 前置准备

1.1 账号与密钥申请

注册账号后,进入Access Token 申请页:

https://www.modelscope.cn/my/access/token

Image

创建并复制你的 API Token(后续配置使用)

1.2 免费额度规则

ModelScope 提供永久免费推理额度,规则简单清晰:

用户总限额:每日 2000 次调用

单模型限额:不同模型额度不同(例:Qwen/Qwen3.5-35B-A3B 每日 200 次)

额度会在响应头中返回,可直接解析展示


2. 🛠️ 项目依赖配置

创建 Rust 项目,在Cargo.toml中添加核心依赖:

[package]
name = "base-agent"
version = "0.1.0"
edition = "2024"
[dependencies]
rig-core = "0.36.0"
tokio = { version = "1", features = ["full"] }
toml = "0.8"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
reqwest = { version = "0.12", features = ["json"] }

3. ⚙️ 核心代码实现

基于 Rig 框架兼容 OpenAI 协议的特性,直接适配 ModelScope API,同时自定义对话接口实现额度监控。

3.1 完整实现代码

//! ModelScope Agent//! 通过 ModelScope API Inference 接入网络大模型,支持实时额度监控//! API 文档:https://www.modelscope.cn/docs/model-service/API-Inference
use crate::agents::BaseAgent;
use crate::config::Config;
use rig::{client::CompletionClient,providers::openai::Client};
use serde_json::json;
// ModelScope OpenAI 兼容接口地址
const BASE_URL:&str = "https://api-inference.modelscope.cn/v1";
/// 统一解析配置:优先环境变量,其次配置文件
fn resolve_config(cfg:&Config)->Result<(String,String),Box <dynstd::error::Error>>{
  // API Token 配置
  let api_token =std::env::var("MODELSCOPE_API_TOKEN").ok().or_else(||cfg.modelscope.api_token.clone()).ok_or("请配置 ModelScope API Token:环境变量 MODELSCOPE_API_TOKEN 或 config.toml")?;
  // 模型名称配置
  let model = std::env::var("MODELSCOPE_MODEL").unwrap_or_else(|_|cfg.modelscope.model.clone());Ok((api_token,model))
}
/// 初始化 Agent(统一标准接口)
pub fn init(cfg:&Config)->Result<BaseAgent,Box<dynstd::error::Error>>{
  let(api_token,model) = resolve_config(cfg)?;
  println!("🌐 使用 ModelScope 模型: {}",model);
  // Rig 框架直接构建 OpenAI 协议客户端
  let client = Client::builder().base_url(BASE_URL).api_key(api_token).build()?.completions_api();
  // 构建 Agent,配置系统提示词
  Ok(client.agent(&model).preamble(&cfg.agent.system_prompt).temperature(0.7).build())
}
/// 直接对话 + 实时解析调用额度(核心功能)
pub async fn chat(cfg:&Config,prompt:&str)->Result<String,Box<dynstd::error::Error>>{
  let (api_token,model) = resolve_config(cfg)?;
  println!("🌐 使用 ModelScope 模型: {}",model);
  // 发送 HTTP 请求
  let client = reqwest::Client::new();
  let resp = client.post(format!("{}/chat/completions",BASE_URL)).header("Authorization",format!("Bearer {}",api_token)).header("Content-Type","application/json").json(&json!({"model":model,"messages":[{"role":"system","content":cfg.agent.system_prompt},{"role":"user","content":prompt}],"temperature":0.7})).send().await?;
  // 解析响应头:用户额度 + 模型额度
  let headers = resp.headers();
  let(user_limit,user_remaining) = (headers.get("modelscope-ratelimit-requests-limit").and_then(|v|v.to_str().ok()),headers.get("modelscope-ratelimit-requests-remaining").and_then(|v|v.to_str().ok()),);
  let(model_limit,model_remaining) = (headers.get("modelscope-ratelimit-model-requests-limit").and_then(|v|v.to_str().ok()),headers.get("modelscope-ratelimit-model-requests-remaining").and_then(|v|v.to_str().ok()),);
  // 打印额度信息
  if user_limit.is_some() || model_limit.is_some(){println!("\n📊 用量限额:");
  if let(Some(limit),Some(remaining))= (user_limit,user_remaining){println!("   用户总限额: {} | 剩余: {}",limit,remaining);}
  if let(Some(limit),Some(remaining)) = (model_limit,model_remaining){println!("   模型限额:   {} | 剩余: {}",limit,remaining);}}
  // 解析模型回复
  let body:serde_json::Value = resp.json().await?;
  let content = body["choices"][0]["message"]["content"].as_str().unwrap_or("").to_string();
  Ok(content)
}

3.2 代码核心说明

配置兼容:支持环境变量+配置文件双方式注入密钥,灵活易用

Rig 框架适配:ModelScope 兼容 OpenAI 协议,直接复用 Rig 的 OpenAI 客户端

额度监控:通过解析 HTTP 响应头,实时获取用户总额度和单模型额度

标准 Agent:封装统一的init接口,可直接集成到项目中


4. 🎯 运行效果展示

调用chat函数后,控制台输出如下(完全符合预期):

🌐 使用 ModelScope 模型: Qwen/Qwen3.5-35B-A3B
📊 用量限额:
用户总限额: 2000 | 剩余: 1999
模型限额:   200 | 剩余: 199
🤖 Agent 回复:
你好!我是你的 AI 助手。
我可以协助你:
回答问题
:涵盖知识查询、概念解释等。
创作内容
:如写作、邮件、报告等。
处理任务
:如总结摘要、逻辑分析、编程辅助等。
无论是工作、学习还是生活上的疑问,欢迎随时向我提问。有什么需要帮忙的吗?

5. 💡 核心优势

零成本使用:ModelScope 官方免费额度,无需付费即可开发测试

Rust 原生高效:依托 Rig 框架,代码简洁、性能优异

额度可视化:实时监控调用余量,避免超出限额

开箱即用:复制代码即可运行,适配绝大多数开源大模型


6. ✅ 总结

本文通过极简的代码,实现了用Rust实现 Rig + ModelScope的免费 AI Agent 方案,兼顾了开发效率、运行性能和使用成本。非常适合个人开发者快速搭建轻量 AI 助手、工具类 Agent,大家有什么问题,可以在评论区讨论。