Skip to main content
您当前所在的页面是关于将 Google 模型用作文本补全模型的文档。许多流行的 Google 模型属于聊天补全模型您可能正在寻找此页面
本指南介绍如何在 LangChain 中使用 Google Generative AI 模型。注意:它与 Google Cloud Vertex AI 集成 是分开的。

环境配置

要使用 Google Generative AI,您必须安装 langchain-google-genai Python 包并生成一个 API 密钥。阅读更多详细信息
pip install -qU  langchain-google-genai
from langchain_google_genai import GoogleGenerativeAI
from getpass import getpass

api_key = getpass()
llm = GoogleGenerativeAI(model="models/text-bison-001", google_api_key=api_key)
print(
    llm.invoke(
        "What are some of the pros and cons of Python as a programming language?"
    )
)
**Python 的优点:**

* **易于学习:** Python 是一门非常容易学习的编程语言,即使是初学者也能轻松上手。它的语法简单直接,并且有大量资源可供您入门。
* **多功能性:** Python 可用于各种任务,包括 Web 开发、数据科学和机器学习。对于初学者来说也是不错的选择,因为它适用于多种项目,您可以先学习基础知识,然后再转向更复杂的任务。
* **高级语言:** Python 是一门高级编程语言,这意味着它比其他编程语言更接近人类语言。这使得它更容易阅读和理解,对初学者来说是一个很大的优势。
* **开源:** Python 是一门开源编程语言,这意味着它可以免费使用,并且有大量资源可供您学习。
* **社区支持:** Python 拥有庞大且活跃的开发者社区,这意味着如果您遇到困难,会有很多人为您提供帮助。

**Python 的缺点:**

* **运行速度较慢:** 与 C++ 等其他一些语言相比,Python 的运行速度相对较慢。如果您在处理计算密集型任务时,这可能会成为一个劣势。
* **性能不如其他语言:** Python 的性能不如 C++ 或 Java 等其他编程语言。如果您从事需要高性能的项目,这可能会成为一个劣势。
* **动态类型:** Python 是一门动态类型编程语言,这意味着变量的类型可以在运行时更改。如果您需要确保代码的类型安全,这可能会成为一个劣势。
* **内存管理非手动:** Python 使用垃圾回收系统来管理内存。如果您需要对内存管理有更强的控制力,这可能会成为一个劣势。

总体而言,Python 是一门非常适合初学者的优秀编程语言。它易于学习、功能多样,并且拥有庞大的开发者社区。然而,重要的是要意识到其局限性,例如运行速度较慢和性能不足。
llm = GoogleGenerativeAI(model="gemini-pro", google_api_key=api_key)
print(
    llm.invoke(
        "What are some of the pros and cons of Python as a programming language?"
    )
)
**优点:**

* **简洁性与可读性:** Python 以其简洁易读的语法而闻名,这使得初学者能够轻松上手,并降低了出错的可能性。它使用缩进来定义代码块,使代码结构清晰且视觉上更具吸引力。

* **多功能性:** Python 是一门通用编程语言,意味着它可以用于各种任务,包括 Web 开发、数据科学、机器学习和桌面应用程序。这种多功能性使其成为各种项目和行业的热门选择。

* **庞大的社区:** Python 拥有庞大且活跃的开发者社区,这促进了其发展和普及。该社区提供了丰富的文档、教程和开源库,使得 Python 开发者很容易找到支持和资源。

* **丰富的库:** Python 提供了丰富的库和框架集合,用于处理各种任务,例如数据分析(NumPy、Pandas)、Web 开发(Django、Flask)、机器学习(Scikit-learn、TensorFlow)等。这些库提供了预构建的函数和模块,使开发人员能够快速高效地解决常见问题。

* **跨平台支持:** Python 是跨平台的,意味着它可以在各种操作系统上运行,包括 Windows、macOS 和 Linux。这允许开发人员编写可以轻松在不同平台间共享和使用的代码。

**缺点:**

* **速度与性能:** 由于采用解释型特性,Python 通常比 C++ 或 Java 等编译型语言慢。这对于性能密集型任务(如实时代系统或重型数值计算)可能是一个劣势。

* **内存占用:** 与编译型语言相比,Python 程序往往消耗更多内存。这是因为 Python 使用动态内存分配系统,可能导致内存碎片化和更高的内存使用率。

* **缺乏静态类型检查:** Python 是一门动态类型语言,这意味着变量的数据类型没有显式定义。这可能在开发过程中增加检测类型错误的难度,从而导致运行时出现意外行为或错误。

* **GIL(全局解释器锁):** Python 使用全局解释器锁(GIL)来确保同一时间只有一个线程可以执行 Python 字节码。这可能会限制 Python 程序的可扩展性和并行性,尤其是在多线程或多进程场景中。

* **包管理:** 虽然 Python 拥有庞大的库和包生态系统,但管理依赖项和包版本可能具有挑战性。Python 包索引(PyPI)是 Python 包的官方存储库,但要确保兼容性并避免不同包版本之间的冲突可能比较困难。

在链中使用

from langchain_core.prompts import PromptTemplate
template = """Question: {question}

Answer: Let's think step by step."""
prompt = PromptTemplate.from_template(template)

chain = prompt | llm

question = "How much is 2+2?"
print(chain.invoke({"question": question}))
4

流式调用

import sys

for chunk in llm.stream("Tell me a short poem about snow"):
    sys.stdout.write(chunk)
    sys.stdout.flush()
在冬日的怀抱中,一场无声的芭蕾,
雪花翩跹而下,宛若天界奇观。
轻诉着秘密,它们悄然飘落,
铺就一层白毯,覆盖万物。

以温柔的优雅,它们装点大地,
将世界幻化为冬日仙境。
树木披上冰晶的华服,
熠熠生辉的盛景,令人驻足惊叹。

雪花旋舞,宛如舞台上的舞者,
交织成一首交响乐,一幅冬日画卷。
它们无声的呢喃,是一曲甜蜜的夜曲,
随起舞与回旋,汇成雪的倾泻。

在黎明前的静谧中,迎来霜晨,
雪花闪烁明亮,宛如重生钻石。
每一片雪花皆独一无二,自成篇章,
皆是神明亲手雕琢的杰作。

让我们尽情沉醉于这冬日的欢愉,
任雪花飘落,送上温柔的轻吻。
因为在它们的拥抱中,我们寻得深邃的宁静,
一座冰封的世界,四周环绕着魔法。

安全设置

Gemini 模型具有默认的安全设置,您可以对其进行覆盖。如果您的模型频繁返回“安全警告”,您可以尝试调整模型的 safety_settings 属性。例如,若要关闭针对危险内容的拦截,您可以按如下方式构建您的 LLM:
from langchain_google_genai import GoogleGenerativeAI, HarmBlockThreshold, HarmCategory

llm = GoogleGenerativeAI(
    model="gemini-pro",
    google_api_key=api_key,
    safety_settings={
        HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_NONE,
    },
)
有关可用类别和阈值的完整枚举,请参阅 Google 的安全设置类型