解锁双子座 API 代码执行功能的力量

释放Gemini API的代码执行功能的力量。发现它如何赋予开发者以基于代码的推理、解方程和文本处理的能力。探索展示这一创新功能能力的示例,从生成质数到网页抓取和机器学习模型创建。了解代码执行和函数调用之间的差异,并学习如何在您的工作流程中利用这个改变游戏规则的工具。

2025年2月17日

party-gif

利用Gemini API的新代码执行功能,解锁基于代码的推理能力。将此功能无缝集成到您的应用程序中,使它们能够生成、执行和学习代码,轻松解决复杂问题。探索这一创新功能如何转变您的开发工作流程,开启新的可能性。

强大的功能:在Gemini API上执行代码

谷歌的Gemini API提供了一个独特的功能,称为"代码执行",它使模型能够生成和运行Python代码,并通过迭代学习结果,直到达到最终输出。这种强大的功能使开发人员能够构建从代码推理中获益的应用程序,例如求解方程或处理文本。

代码执行相比普通函数调用的主要优势有:

  1. 简单性: 语言模型决定是否需要编写代码来执行某个操作,并可以在API后端运行该代码。这比设置开发环境和进行多次API调用要简单得多。

  2. 灵活性: 通过代码执行,模型可以迭代代码并完善输出,而函数调用仅限于单次API请求。

  3. 隔离性: 代码执行发生在完全隔离的环境中,这意味着开发人员不需要担心底层基础设施。

然而,代码执行功能也有一些限制:

  • 目前仅限于Python和特定的库(NumPy和SciPy)。
  • 无法返回媒体文件等工件或处理非文本输出(如数据图)。
  • 代码执行时间限制为30秒,可能不适用于所有用例。

尽管存在这些限制,代码执行功能对于开发人员来说仍然非常强大,特别是在使用Gemini 1.5 Flash或Pro模型构建代理时。转录中提供的示例演示了模型如何生成和执行代码来解决各种问题,包括数学计算、字符串操作、数据分析、网页抓取,甚至机器学习模型训练。

通过利用代码执行功能,开发人员可以创建更复杂和更强大的应用程序,从而受益于模型的推理和迭代问题解决能力。

理解代码执行与函数调用的区别

代码执行和普通函数调用在大型语言模型(LLM)如Gemini的上下文中的主要区别是:

  1. 代码执行:

    • LLM可以直接在API后端生成和执行代码。
    • 模型决定是否需要编写代码来执行某个操作,并可以运行该代码。
    • 这是单次API请求,代码执行发生在后端,允许模型对解决方案进行迭代。
    • 目前仅限于Python和特定的库,如NumPy和SciPy。
    • 存在一些限制,如无文件I/O、无非文本输出,以及30秒的执行时间限制。
  2. 函数调用:

    • 允许与使用外部函数的真实世界API或工具进行交互。
    • 需要提供模型可以访问的工具列表,并设置开发环境。
    • 可能需要进行多次API调用才能完成任务。
    • 在语言、框架和功能方面提供更大的灵活性。
    • 需要更多地管理外部环境。

谷歌建议,如果任务可以在提供的功能范围内完成,请使用代码执行,因为它更简单易用,无需管理外部环境。但是,当任务需要访问代码执行环境之外的外部资源或功能时,函数调用提供了更大的灵活性。

探索代码执行示例

谷歌的Gemini API提供了一个强大的功能,称为"代码执行",它允许开发人员在API内生成和运行Python代码。这种功能使得构建从代码推理中获益的应用程序成为可能,例如求解方程或处理文本。

让我们探讨一下如何利用这个功能的一些示例:

简单数学

Gemini API可以生成并执行代码来执行基本的数学运算,例如计算前200个素数的和。

# 生成并执行代码来计算总和
result = """
import math

primes = []
num = 2
while len(primes) < 200:
    is_prime = True
    for i in range(2, int(math.sqrt(num)) + 1):
        if num % i == 0:
            is_prime = False
            break
    if is_prime:
        primes.append(num)
    num += 1

total_sum = sum(primes)
print(f"The sum of the first 200 prime numbers is: {total_sum}")
"""

输出显示了前200个素数的总和。

字符串操作

Gemini API还可以生成并执行代码来执行各种字符串操作任务,例如将字符串转换为大写、计算"o"字符的数量,以及反转字符串。

# 生成并执行代码进行字符串操作
result = """
text = "hello world, welcome to Gemini API"

# 转换为大写
upper_text = text.upper()
print(f"Uppercase text: {upper_text}")

# 计算'o'字符的数量
o_count = text.count('o')
print(f"Number of 'o' characters: {o_count}")

# 反转字符串
reversed_text = text[::-1]
print(f"Reversed text: {reversed_text}")
"""

输出显示了字符串操作任务的结果。

数据分析

Gemini API可以生成并执行代码来执行基本的数据分析任务,例如生成随机数、计算统计数据(平均值、中位数、众数)以及创建直方图。

# 生成并执行代码进行数据分析
result = """
import numpy as np
import matplotlib.pyplot as plt

# 生成100到1000之间的随机数
numbers = np.random.randint(100, 1001, size=1000)

# 计算统计数据
mean = np.mean(numbers)
median = np.median(numbers)
mode = stats.mode(numbers)[0]
min_value = np.min(numbers)
max_value = np.max(numbers)
total_sum = np.sum(numbers)

print(f"Mean: {mean:.2f}")
print(f"Median: {median:.2f}")
print(f"Mode: {mode}")
print(f"Minimum: {min_value}")
print(f"Maximum: {max_value}")
print(f"Sum: {total_sum}")

# 创建直方图
plt.hist(numbers, bins=30)
plt.xlabel("Value")
plt.ylabel("Frequency")
plt.title("Histogram of Random Numbers")
plt.show()
"""

输出包括计算的统计数据和生成随机数的直方图。

这些示例展示了Gemini API代码执行功能的多样性,允许开发人员利用模型的功能有效地解决各种问题。

生成图表和运行机器学习模型

Gemini API的代码执行功能不仅允许开发人员生成代码,还可以在API后端执行代码。这种功能不仅限于简单的数学运算或字符串操作,还可以生成数据可视化和训练机器学习模型。

在测试代码执行功能时,示例提示包括创建直方图图。虽然API能够生成必要的Python代码来生成图表,但它无法直接返回图表工件。但是,生成的代码可以在本地执行,允许开发人员生成所需的可视化效果。

同样,API演示了生成合成数据、将其拆分为训练集和测试集、创建和训练线性回归模型,以及在测试集上评估模型性能的能力。同样,API返回了完成这些任务的Python代码,开发人员可以在本地运行该代码以获得最终结果。

这些示例展示了Gemini API代码执行功能的多样性。开发人员可以利用这种功能来构建需要高级数据处理、可视化和机器学习功能的应用程序,而无需管理底层基础设施或设置复杂的开发环境。API处理代码的生成和执行,让开发人员可以专注于高层次的问题解决和应用程序设计。

Gemini API代码执行的定价和限制

Gemini API提供了一个免费层供开发人员探索代码执行功能。但是,需要注意一些限制:

  • 请求限制: 免费层对每分钟可以发出的请求数量有限制。这是为了防止滥用并确保API的公平使用。

  • 执行时间: 代码执行功能的最大运行时间为30秒。任何超过该时间的代码都会超时。

  • 支持的库: 代码执行环境仅提供对NumPy和SciPy等有限库的访问。更复杂的库或自定义包不受支持。

  • 无文件I/O或非文本输出: 代码执行功能不支持文件I/O操作或生成媒体文件等非文本输出。这意味着您无法将其用于需要这些功能的任务。

  • 对其他功能的潜在影响: 启用代码执行有时会对生成故事或文章等其他模型输出的性能或质量产生负面影响。这是在使用该功能时需要考虑的因素。

对于需要更大灵活性或更高使用限制的开发人员,谷歌提供了Gemini API的付费层。这些层提供了更高的请求限制、更长的执行时间,以及对更广泛的库和功能的访问。

总的来说,Gemini API中的代码执行功能可以是开发人员的一个强大工具,但重要的是要了解其限制和定价结构,以确保它适合您的用例和预算。

FAQ