Crate gems

Source
Expand description

ยง๐Ÿ’Ž Gems

Crates.io docs License

๐Ÿ’Ž GEMS: A cli, tui, and sdk for interacting with the Gemini API, allowing you to generate creative content, perform text-related tasks, and get information about supported models.

ยง๐Ÿ“– Table of Contents

ยง๐Ÿš€ Installation

To install the gems cli, use the following Cargo command:

cargo install --locked gems --all-features

ยงโœจ Features

  • Interact with the Gemini API from the terminal.
  • Generate creative content with ease.
  • Stream generation of content for continuous output.
  • Count the number of tokens in a text.
  • Embed content into a specified model.
  • Batch embed multiple contents efficiently.
  • Get information about the current model and list available models.

ยงUsage

Before using the gems CLI, make sure to set the following environment variables:

export GEMINI_API_KEY=<your_gemini_api_key>
export GEMINI_MODEL=<your_gemini_model>

Generate an api key from Google AI Studio.

ยงโŒจ Usage as CLI

ยงGenerate creative content:

gems generate -t "Hello"

ยงAnalyze an image and generate content from text:

curl -o image.jpg https://storage.googleapis.com/generativeai-downloads/images/scones.jpg

gems vision -i image.jpg

gems vision -i image.jpg -t "What's in the image?"

ยงStream generation of content:

gems stream -t "Generate a short fictional story"

ยงCount the number of tokens in a text:

gems count -t "Hello There!"

ยงEmbed content into a specified model:

gems -m 'embedding-001' embed -t "Write a story about a magic backpack."

ยงBatch embed multiple contents:

gems -m 'embedding-001' batch -t "Write a story about a magic backpack.","Generate a poem about nature."

ยงGet information about the current model:

gems info

ยงList available models:

gems list

ยง๐ŸŽจ Options

OptionDescription
--api-keySpecify the API key for accessing the Gemini API.
--modelSpecify the model to use for generating content.

ยง๐Ÿ›  Subcommands

SubcommandDescription
generateGenerate creative content.
visionAnalyze an image and generate content from text.
streamStream the generation of content.
countCount the number of tokens in a text.
embedEmbed content into a specified model.
batchBatch embed multiple contents.
infoGet information about the current model.
listList available models.

ยงโœจ Usage as Dependency

  1. Add the gems crate:

    [dependencies]
    gems = "0.0.9"
  2. Use the Client struct to interact with the Gemini API:

    use gems::Client;
    
    #[tokio::main]
    async fn main() {
        let mut client = Client::new("your_api_key", "your_model");
    
        // Use the various functions provided by the client
        // For example:
        match client.generate_content("Hello").await {
            Ok(response) => {
                println!("{}", response);
            }
            Err(err) => {
                eprintln!("Error: {:?}", err);
            }
        }
    }

ยง๐Ÿ“Œ Examples

This repository contains a list of notebooks examples on how to use the sdk and or the cli. To use the notebooks in this repository, you need to set up your environment. Follow these steps to get started:

  1. Clone the repository to your local machine:

    git clone https://github.com/wiseaidev/gems.git
  2. Install the required dependencies and libraries. Make sure you have Rust, Jupyter Notebook, and evcxr_jupyter installed on your system.

    # Install a Rust toolchain (e.g. nightly):
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly
    
    # Install Jupyter Notebook
    pip install notebook
    
    # Install evcxr_jupyter
    cargo install evcxr_jupyter
    evcxr_jupyter --install 
  3. Navigate to the cloned repository and build the project:

    cd gems
    cargo build --release --all-features
  4. Start Jupyter Notebook:

    jupyter notebook
  5. Access the notebooks in your web browser by clicking on the notebook file you want to explore.

IDExampleOpen on GitHubLaunch on BinderLaunch on Colab
1BasicGithubBinderOpen In Colab
2RocketGithubBinderOpen In Colab
3AxumGithubBinderOpen In Colab

ยง๐Ÿค Contributing

Contributions and feedback are welcome! If youโ€™d like to contribute, report an issue, or suggest an enhancement, please engage with the project on GitHub. Your contributions help improve this crate for the community.

ยง๐Ÿ“„ License

This project is licensed under the MIT License.

Re-exportsยง

Modulesยง