Skip to main content

An integration package connecting Google's genai package and LangChain

Project description

langchain-google-genai

This package contains the LangChain integrations for Gemini through their generative-ai SDK.

Installation

pip install -U langchain-google-genai

Chat Models

This package contains the ChatGoogleGenerativeAI class, which is the recommended way to interface with the Google Gemini series of models.

To use, install the requirements, and configure your environment.

export GOOGLE_API_KEY=your-api-key

Then initialize

from langchain_google_genai import ChatGoogleGenerativeAI

llm = ChatGoogleGenerativeAI(model="gemini-pro")
llm.invoke("Sing a ballad of LangChain.")

Multimodal inputs

Gemini vision model supports image inputs when providing a single chat message. Example:

from langchain_core.messages import HumanMessage
from langchain_google_genai import ChatGoogleGenerativeAI

llm = ChatGoogleGenerativeAI(model="gemini-pro-vision")
# example
message = HumanMessage(
    content=[
        {
            "type": "text",
            "text": "What's in this image?",
        },  # You can optionally provide text parts
        {"type": "image_url", "image_url": "https://picsum.photos/seed/picsum/200/300"},
    ]
)
llm.invoke([message])

The value of image_url can be any of the following:

  • A public image URL
  • An accessible gcs file (e.g., "gcs://path/to/file.png")
  • A base64 encoded image (e.g., data:image/png;base64,abcd124)

Multimodal outputs

Gemini 2.0 Flash Experimental model supports text output with inline images

from langchain_google_genai import ChatGoogleGenerativeAI

llm = ChatGoogleGenerativeAI(model="models/gemini-2.0-flash-exp-image-generation")
# example
response = llm.invoke(
    "Generate an image of a cat and say meow",
    generation_config=dict(response_modalities=["TEXT", "IMAGE"]),
)

# Base64 encoded binary data of the image
image_base64 = response.content[0].get("image_url").get("url").split(",")[-1]
meow_str = response.content[1]

Multimodal Outputs in Chains

from langchain_core.runnables import RunnablePassthrough
from langchain_core.prompts import ChatPromptTemplate

from langchain_google_genai import ChatGoogleGenerativeAI, Modality

llm = ChatGoogleGenerativeAI(
    model="models/gemini-2.0-flash-exp-image-generation",
    response_modalities=[Modality.TEXT, Modality.IMAGE],
)

prompt = ChatPromptTemplate(
    [("human", "Generate an image of {animal} and tell me the sound of the animal")]
)
chain = {"animal": RunnablePassthrough()} | prompt | llm
res = chain.invoke("cat")

Thinking support

Gemini 2.5 Flash model supports reasoning through their thoughts

from langchain_google_genai import ChatGoogleGenerativeAI

llm = ChatGoogleGenerativeAI(model="models/gemini-2.5-flash-preview-04-17", thinking_budget=1024)

response = llm.invoke(
    "How many O's are in Google? Please tell me how you double checked the result"
)

assert response.usage_metadata["output_token_details"]["reasoning"] > 0

Embeddings

This package also adds support for google's embeddings models.

from langchain_google_genai import GoogleGenerativeAIEmbeddings

embeddings = GoogleGenerativeAIEmbeddings(model="models/embedding-001")
embeddings.embed_query("hello, world!")

Semantic Retrieval

Enables retrieval augmented generation (RAG) in your application.

# Create a new store for housing your documents.
corpus_store = GoogleVectorStore.create_corpus(display_name="My Corpus")

# Create a new document under the above corpus.
document_store = GoogleVectorStore.create_document(
    corpus_id=corpus_store.corpus_id, display_name="My Document"
)

# Upload some texts to the document.
text_splitter = CharacterTextSplitter(chunk_size=500, chunk_overlap=0)
for file in DirectoryLoader(path="data/").load():
    documents = text_splitter.split_documents([file])
    document_store.add_documents(documents)

# Talk to your entire corpus with possibly many documents. 
aqa = corpus_store.as_aqa()
answer = aqa.invoke("What is the meaning of life?")

# Read the response along with the attributed passages and answerability.
print(response.answer)
print(response.attributed_passages)
print(response.answerable_probability)

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

langchain_google_genai-2.1.4.tar.gz (40.4 kB view details)

Uploaded Source

Built Distribution

langchain_google_genai-2.1.4-py3-none-any.whl (44.3 kB view details)

Uploaded Python 3

File details

Details for the file langchain_google_genai-2.1.4.tar.gz.

File metadata

File hashes

Hashes for langchain_google_genai-2.1.4.tar.gz
Algorithm Hash digest
SHA256 b52e10ea3daf1a65f70b73c78b78235466593de2aa9f4119fa887b804605efb7
MD5 814ba1050d8f9041a81c6c4cf6e6a1e3
BLAKE2b-256 814873cb0a186f028a3597a825c930957a032895960381af505fa93805fe1736

See more details on using hashes here.

File details

Details for the file langchain_google_genai-2.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for langchain_google_genai-2.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a3fa3cf7fe9c1de77280f42fbdd22cfcc5fbeb0d60cd5be7a0e6c50a74f5ce73
MD5 611259c6b4716b8eeffcfc548c8c9cda
BLAKE2b-256 07122be71bebbc23e4a499c50df567017110e4d382a045422647c8e6b1040541

See more details on using hashes here.

Supported by

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