Files
claude-code-rust/src/config/api_config.rs
T
Serendipity 1a1254f045
CI - 构建、测试和质量检查 / Rust 代码检查 (push) Has been cancelled
CI - 构建、测试和质量检查 / 单元测试 (push) Has been cancelled
CI - 构建、测试和质量检查 / 代码格式检查 (push) Has been cancelled
CI - 构建、测试和质量检查 / Clippy 代码质量检查 (push) Has been cancelled
CI - 构建、测试和质量检查 / 构建可执行文件 (claude_code_rs, macos-latest, x86_64-apple-darwin) (push) Has been cancelled
CI - 构建、测试和质量检查 / 构建可执行文件 (claude_code_rs, ubuntu-latest, x86_64-unknown-linux-gnu) (push) Has been cancelled
CI - 构建、测试和质量检查 / 构建可执行文件 (claude_code_rs.exe, windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
feat: 添加初始项目结构和基础文件
- 添加 Rust GUI 桌面应用程序入口点
- 添加 TypeScript/JavaScript 项目基础结构文件
- 包含组件、工具、命令、服务和工具定义
- 添加配置文件如 .gitignore、.gitattributes 和 LICENSE
- 包含图片资源和演示文件
- 为各种功能模块添加占位符和类型定义
2026-04-20 16:58:22 +08:00

62 lines
1.9 KiB
Rust

//! API Configuration
use serde::{Deserialize, Serialize};
/// Anthropic API configuration
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ApiConfig {
/// API key (can be set via environment variable)
pub api_key: Option<String>,
/// Base URL for API requests
pub base_url: String,
/// Maximum tokens per request
pub max_tokens: usize,
/// Request timeout in seconds
pub timeout: u64,
/// Enable streaming responses
pub streaming: bool,
/// Beta headers to include
pub beta_headers: Vec<String>,
}
impl Default for ApiConfig {
fn default() -> Self {
Self {
api_key: std::env::var("ANTHROPIC_API_KEY").ok()
.or(std::env::var("DASHSCOPE_API_KEY").ok())
.or(std::env::var("DEEPSEEK_API_KEY").ok()),
base_url: std::env::var("API_BASE_URL")
.unwrap_or_else(|_| "https://api.anthropic.com".to_string()),
max_tokens: 4096,
timeout: 120,
streaming: true,
beta_headers: vec![],
}
}
}
impl ApiConfig {
/// Get the API key, checking environment variable first
pub fn get_api_key(&self) -> Option<String> {
std::env::var("ANTHROPIC_API_KEY").ok()
.or(std::env::var("DASHSCOPE_API_KEY").ok())
.or(std::env::var("DEEPSEEK_API_KEY").ok())
.or(self.api_key.clone())
}
/// Get the base URL, checking environment variable first
pub fn get_base_url(&self) -> String {
std::env::var("API_BASE_URL")
.unwrap_or_else(|_| self.base_url.clone())
}
/// Get the model ID for the given model name
pub fn get_model_id(&self, model: &str) -> String {
match model {
"opus" => "claude-3-opus-20240229".to_string(),
"sonnet" => "claude-3-5-sonnet-20241022".to_string(),
"haiku" => "claude-3-5-haiku-20241022".to_string(),
_ => model.to_string(),
}
}
}