Skip to main content

LLM plugin to access Google's Gemini family of models

Project description

llm-gemini

PyPI Changelog Tests License

API access to Google's Gemini models

Installation

Install this plugin in the same environment as LLM.

llm install llm-gemini

Usage

Configure the model by setting a key called "gemini" to your API key:

llm keys set gemini
<paste key here>

You can also set the API key by assigning it to the environment variable LLM_GEMINI_KEY.

Now run the model using -m gemini-1.5-pro-latest, for example:

llm -m gemini-1.5-pro-latest "A joke about a pelican and a walrus"

A pelican walks into a seafood restaurant with a huge fish hanging out of its beak. The walrus, sitting at the bar, eyes it enviously.

"Hey," the walrus says, "That looks delicious! What kind of fish is that?"

The pelican taps its beak thoughtfully. "I believe," it says, "it's a billfish."

Other models are:

  • gemini-1.5-flash-latest
  • gemini-1.5-flash-8b-latest - the least expensive
  • gemini-exp-1114 - recent experimental

Images, audio and video

Gemini models are multi-modal. You can provide images, audio or video files as input like this:

llm -m gemini-1.5-flash-latest 'extract text' -a image.jpg

Or with a URL:

llm -m gemini-1.5-flash-8b-latest 'describe image' \
  -a https://static.simonwillison.net/static/2024/pelicans.jpg

Audio works too:

llm -m gemini-1.5-pro-latest 'transcribe audio' -a audio.mp3

And video:

llm -m gemini-1.5-pro-latest 'describe what happens' -a video.mp4

The Gemini prompting guide includes extensive advice on multi-modal prompting.

JSON output

Use -o json_object 1 to force the output to be JSON:

llm -m gemini-1.5-flash-latest -o json_object 1 \
  '3 largest cities in California, list of {"name": "..."}'

Outputs:

{"cities": [{"name": "Los Angeles"}, {"name": "San Diego"}, {"name": "San Jose"}]}

Code execution

Gemini models can write and execute code - they can decide to write Python code, execute it in a secure sandbox and use the result as part of their response.

To enable this feature, use -o code_execution 1:

llm -m gemini-1.5-pro-latest -o code_execution 1 \
'use python to calculate (factorial of 13) * 3'

Chat

To chat interactively with the model, run llm chat:

llm chat -m gemini-1.5-pro-latest

Embeddings

The plugin also adds support for the text-embedding-004 embedding model.

Run that against a single string like this:

llm embed -m text-embedding-004 -c 'hello world'

This returns a JSON array of 768 numbers.

This command will embed every README.md file in child directories of the current directory and store the results in a SQLite database called embed.db in a collection called readmes:

llm embed-multi readmes --files . '*/README.md' -d embed.db -m text-embedding-004

You can then run similarity searches against that collection like this:

llm similar readmes -c 'upload csvs to stuff' -d embed.db

See the LLM embeddings documentation for further details.

Development

To set up this plugin locally, first checkout the code. Then create a new virtual environment:

cd llm-gemini
python3 -m venv venv
source venv/bin/activate

Now install the dependencies and test dependencies:

llm install -e '.[test]'

To run the tests:

pytest

This project uses pytest-recording to record Gemini API responses for the tests.

If you add a new test that calls the API you can capture the API response like this:

PYTEST_GEMINI_API_KEY="$(llm keys get gemini)" pytest --record-mode once

You will need to have stored a valid Gemini API key using this command first:

llm keys set gemini
# Paste key here

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

llm_gemini-0.5a0.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

llm_gemini-0.5a0-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file llm_gemini-0.5a0.tar.gz.

File metadata

  • Download URL: llm_gemini-0.5a0.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.13.0

File hashes

Hashes for llm_gemini-0.5a0.tar.gz
Algorithm Hash digest
SHA256 2b8f5bb05a1873dcd06076dd0a733af06909a1ea8cc3af25605f6f23ad4ad25e
MD5 dbc26a68c7f136e546cc2b23e3d60174
BLAKE2b-256 3649b77ccf77b78e3705df9487a3048fa6a82a6995c113e74e96759e3e335318

See more details on using hashes here.

File details

Details for the file llm_gemini-0.5a0-py3-none-any.whl.

File metadata

  • Download URL: llm_gemini-0.5a0-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.13.0

File hashes

Hashes for llm_gemini-0.5a0-py3-none-any.whl
Algorithm Hash digest
SHA256 057ad22dec8b27adebb20fe9f3b51942983bbd4a9427a007020e7d270a25e422
MD5 b69d326bd13a0c3475ce9a05d204caa6
BLAKE2b-256 26b7a47fdb38bdbd1a72567a852482e5c3d707bed1ca1eb32dc66f001bf03330

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page