rig_core/providers/cohere/mod.rs
1//! Cohere API client and Rig integration
2//!
3//! # Example
4//! ```no_run
5//! use rig_core::{client::CompletionClient, providers::cohere};
6//!
7//! # fn run() -> Result<(), Box<dyn std::error::Error>> {
8//! let client = cohere::Client::new("YOUR_API_KEY")?;
9//!
10//! let command_r = client.completion_model(cohere::COMMAND_R);
11//! # Ok(())
12//! # }
13//! ```
14
15pub mod client;
16pub mod completion;
17pub mod embeddings;
18pub mod streaming;
19
20pub use client::{ApiErrorResponse, ApiResponse, Client};
21pub use completion::CompletionModel;
22pub use embeddings::EmbeddingModel;
23
24// ================================================================
25// Cohere Completion Models
26// ================================================================
27
28/// `command-r-plus` completion model
29pub const COMMAND_R_PLUS: &str = "command-r-plus";
30/// `command-r` completion model
31pub const COMMAND_R: &str = "command-r";
32/// `command` completion model
33pub const COMMAND: &str = "command";
34/// `command-nightly` completion model
35pub const COMMAND_NIGHTLY: &str = "command-nightly";
36/// `command-light` completion model
37pub const COMMAND_LIGHT: &str = "command-light";
38/// `command-light-nightly` completion model
39pub const COMMAND_LIGHT_NIGHTLY: &str = "command-light-nightly";
40
41// ================================================================
42// Cohere Embedding Models
43// ================================================================
44
45/// `embed-english-v3.0` embedding model
46pub const EMBED_ENGLISH_V3: &str = "embed-english-v3.0";
47/// `embed-english-light-v3.0` embedding model
48pub const EMBED_ENGLISH_LIGHT_V3: &str = "embed-english-light-v3.0";
49/// `embed-multilingual-v3.0` embedding model
50pub const EMBED_MULTILINGUAL_V3: &str = "embed-multilingual-v3.0";
51/// `embed-multilingual-light-v3.0` embedding model
52pub const EMBED_MULTILINGUAL_LIGHT_V3: &str = "embed-multilingual-light-v3.0";
53
54pub(crate) fn model_dimensions_from_identifier(identifier: &str) -> Option<usize> {
55 match identifier {
56 EMBED_ENGLISH_V3 | EMBED_MULTILINGUAL_V3 => Some(1_024),
57 EMBED_ENGLISH_LIGHT_V3 | EMBED_MULTILINGUAL_LIGHT_V3 => Some(384),
58 _ => None,
59 }
60}