环境配置
要使用 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,
},
)
连接这些文档 至 Claude、VSCode 等工具,通过 MCP 获取实时答案。

