在AI应用开发中,我们经常需要与各种模型进行交互。Google 的 Gemini 模型也提供了 CLI 工具,方便我们在命令行中进行快速测试和原型验证。本文将介绍如何使用 Python 和 Go 两种语言调用 Gemini CLI,提升开发效率。
问题背景与解决方案
在实际项目中,直接使用 Gemini CLI 命令字符串拼接的方式进行调用,存在可维护性差、容易出错等问题。我们需要一种更优雅、更高效的方式,将 Gemini CLI 集成到我们的 Python 或 Go 代码中。本文将分别介绍使用 Python 的 subprocess 模块和 Go 的 os/exec 包,封装 Gemini CLI 调用,实现更简洁的代码。
Python 调用 Gemini CLI
Python 作为数据科学和 AI 领域的热门语言,拥有丰富的库和工具。我们可以使用 subprocess 模块来调用 Gemini CLI。
import subprocess
import json
def run_gemini_cli(prompt):
command = ["gemini", "--query", prompt, "--output", "json"]
result = subprocess.run(command, capture_output=True, text=True)
if result.returncode != 0:
print(f"Error: {result.stderr}")
return None
try:
return json.loads(result.stdout)
except json.JSONDecodeError:
print(f"Error decoding JSON: {result.stdout}")
return None
# 示例用法
prompt = "介绍一下北京烤鸭的特点。"
response = run_gemini_cli(prompt)
if response:
print(response)
这段代码首先定义了一个 run_gemini_cli 函数,该函数接受一个 prompt 作为输入,并构造 Gemini CLI 命令。然后,使用 subprocess.run 函数执行该命令,并捕获输出。如果命令执行成功,则将输出解析为 JSON 格式,并返回。如果命令执行失败,则打印错误信息,并返回 None。
实战避坑:
- 确保 Gemini CLI 已经正确安装并配置到环境变量中。
subprocess.run函数默认不会输出到控制台,需要设置capture_output=True来捕获输出。text=True参数可以确保输出以文本格式返回,方便后续处理。- 异常处理非常重要,确保能够处理 Gemini CLI 返回的错误信息。
Go 调用 Gemini CLI
Go 语言以其高性能和并发性,在后端开发中占据重要地位。我们可以使用 os/exec 包来调用 Gemini CLI。
package main
import (
"fmt"
"os/exec"
"encoding/json"
)
func runGeminiCLI(prompt string) (map[string]interface{}, error) {
cmd := exec.Command("gemini", "--query", prompt, "--output", "json")
output, err := cmd.CombinedOutput()
if err != nil {
return nil, fmt.Errorf("error running Gemini CLI: %w, output: %s", err, string(output))
}
var result map[string]interface{}
err = json.Unmarshal(output, &result)
if err != nil {
return nil, fmt.Errorf("error unmarshaling JSON: %w, output: %s", err, string(output))
}
return result, nil
}
func main() {
prompt := "介绍一下上海的豫园。"
response, err := runGeminiCLI(prompt)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(response)
}
这段代码定义了一个 runGeminiCLI 函数,它接受一个 prompt 作为输入,并使用 exec.Command 函数创建一个 Gemini CLI 命令。然后,使用 cmd.CombinedOutput 函数执行该命令,并捕获标准输出和标准错误。如果命令执行成功,则将输出解析为 JSON 格式,并返回。如果命令执行失败,则返回错误信息。
实战避坑:
- 同样需要确保 Gemini CLI 已经正确安装并配置到环境变量中。
cmd.CombinedOutput函数会同时捕获标准输出和标准错误,方便排查问题。- 在处理 JSON 输出时,需要使用
json.Unmarshal函数将字节数组转换为 Go 中的数据结构。 - Go 语言的错误处理机制非常重要,需要认真处理每个可能出错的地方。
总结
本文介绍了如何使用 Python 和 Go 两种语言调用 Gemini CLI。通过封装 Gemini CLI 调用,我们可以编写更简洁、更易于维护的代码。在实际项目中,我们可以根据具体的需求选择合适的语言和方法。同时,也需要注意异常处理和错误排查,确保程序的稳定性和可靠性。另外,可以使用 Nginx 作为反向代理,对服务进行负载均衡,提高并发连接数,保障服务稳定性。也可以使用宝塔面板等工具来简化服务器管理。
冠军资讯
键盘上的咸鱼