Gemini 多模态能力调用实战

随着多模态AI的爆发,Google的Gemini系列模型凭借原生多模态架构,能直接处理文本、图像、音频和视频。本文将带你从零调用Gemini API,实现图文混合输入,并对比不同模型版本的效果。

## 环境准备

首先安装官方Python SDK:

```bash pip install google-generativeai ```

然后获取API Key。如果你还没有,可以去Google AI Studio申请,或使用文末的TokenPocket中转站快速获取多个模型的Key。

## 最简调用:图文识别

导入库并配置Key:

```python import google.generativeai as genai

genai.configure(api_key="YOUR_API_KEY") model = genai.GenerativeModel('gemini-1.5-flash') ```

准备图片和文字提示。我们使用一张猫的图片,让模型描述它:

```python import PIL.Image

image = PIL.Image.open("cat.jpg") prompt = "请详细描述这张图片的内容,用中文回答。" response = model.generate_content([prompt, image]) print(response.text) ```

Gemini直接接受PIL图像作为输入,无需手动转base64,省去了大量样板代码。

## 多图对话与视频理解

多张图片同样简单,只需传入列表。下面实现对比两张图片的差异:

```python image1 = PIL.Image.open("before.jpg") image2 = PIL.Image.open("after.jpg") prompt = "这两张图有什么不同?请用中文列出至少3点变化。" response = model.generate_content([prompt, image1, image2]) print(response.text) ```

对于视频,Gemini可以上传后进行分析,或者直接传入视频文件的字节,但推荐使用更高级的File API。这里演示文件上传方式:

```python video_file = genai.upload_file(path="demo.mp4") response = model.generate_content(["总结这个视频讲了什么", video_file]) print(response.text) ```

注意:上传的视频会保留48小时,用完记得调用`video_file.delete()`。

## 流式与JSON输出

对于长文本生成,使用流式响应提升体验:

```python response = model.generate_content("写一篇500字关于AI生态的科幻短文", stream=True) for chunk in response: if chunk.text: print(chunk.text, end="") ```

如果想得到结构化数据,可请求JSON输出。Gemini支持通过系统提示强制返回JSON:

```python model = genai.GenerativeModel('gemini-1.5-pro', generation_config={"response_mime_type": "application/json"}) response = model.generate_content("用JSON列出3种濒危动物和其种群数量") print(response.text) ```

输出将是合法的JSON字符串。

## 安全设置与错误处理

实际应用中,需要过滤不安全内容并处理异常:

```python from google.generativeai.types import HarmCategory, HarmBlockThreshold

safe = { HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_ONLY_HIGH, HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_ONLY_HIGH, } model = genai.GenerativeModel('gemini-1.5-pro', safety_settings=safe)

try: response = model.generate_content("一些可能敏感的内容") print(response.text) except ValueError as e: print(f"请求被拦截:{e}") ```

## 不同模型版本对比

我们尝试同一张复杂图表,分别用gemini-1.5-flash和gemini-2.0-flash-exp测试(需提前开通):

```python for model_name in ["gemini-1.5-flash", "gemini-2.0-flash-exp"]: model = genai.GenerativeModel(model_name) response = model.generate_content(["请解析这张柱状图的数据和趋势", image]) print(f"--- {model_name} ---\n{response.text}\n") ```

你会发现新版本在图表推理、数值提取上更精准,但延迟稍高。日常使用中,flash版本足以应对大多数多模态任务,pro系列适合复杂逻辑。

## 便捷接入多模型:TokenPocket API中转站

如果你希望在同一应用中无缝切换DeepSeek、Qwen、Claude、Gemini等主流模型,并且只用一套API格式,TokenPocket中转站是个不错的选择。它兼容OpenAI接口标准,按量计费,无需单独对接每种模型的官方SDK。新用户注册即赠送免费额度,可直接体验Gemini多模态接口。

只需将base_url改为`https://tokenpocket.site/v1`,用你的TokenPocket Key替换原生Key,代码几乎无需改动——原生的图片传递方式同样适用,让你轻松构建多模型协同的AI应用。赶紧去试一下吧。

Read more

跨境收 USDT 手续费太高?这个方法完全免费

做跨境贸易、自由职业或海外电商的朋友,很多都习惯用 USDT 收款。可一旦要把 USDT 转给供应商、合作方或交易所,手续费问题就来了:以太坊链上一笔 USDT 可能几 U 到几十 U;波场 TRC20 虽然便宜,但账户里通常要留 TRX 作为 Gas。更尴尬的是,有时钱包里只有 USDT 没有 TRX,急用钱却转不出去,还得先去买 TRX、再提回钱包。其实在波场网络上,有一种免费转账的玩法,尤其适合高频、小额跨境收付。 ### 波场转账为什么还要手续费? 波场网络不是直接按笔收取固定手续费,而是使用带宽和能量两种资源。普通 TRX 转账消耗带宽;USDT、USDD 这类智能合约代币转账,主要消耗能量,同时需要少量带宽。如果账户资源不足,系统会自动燃烧 TRX

By 罗本

AI 编程助手配置指南:Cursor/Cline 接入教程

AI 编程助手已经成为日常开发的高频工具,Cursor 和 Cline 是其中关注度很高的两款。默认情况下,它们可以接入官方模型服务,但如果你想使用 DeepSeek、Qwen、Claude、Gemini 等模型,或者希望统一按量计费、用 USDT 支付,自定义 API 中转站会是一个更灵活的选择。下面介绍如何把 Cursor 和 Cline 接入兼容 OpenAI 格式的 API 服务。 ## 一、Cursor 接入自定义 API 打开 Cursor,进入 `Settings` → `Models`,找到 `OpenAI API Key` 区域。关键操作是开启 `Override OpenAI Base URL`,然后填写中转站地址和密钥。

By 罗本

波场免费转账科普:USDD 是什么?和 USDT 有什么区别?怎么免 TRX 转?

在波场(TRON)生态里,提到转账,很多人第一反应是:需要 TRX 做手续费。但如果你经常转 USDT 或 USDD,会发现现在有更省钱的路径——甚至可以实现“0 TRX”免费转账。今天就来讲清楚 USDD 与 USDT 的区别,以及免费转账的正确姿势。 ## 一、USDD 是什么? USDD 是波场生态推出的去中心化美元稳定币,由 TRON DAO Reserve 管理。它目标与美元 1:1 锚定,发行和稳定机制更依赖超额抵押资产和链上套利,而不是单纯由某一家中心化公司持有美元储备。 USDD 基于 TRC-20 标准发行,可以在波场钱包、DeFi、DEX 中自由流转。因为同为波场上的 TRC-20 资产,

By 罗本

如何为你的应用接入多模型 AI 能力

在 AI 应用开发中,单一模型很难同时满足成本、速度、推理能力和多语言等要求。接入多模型能力,不仅能根据任务动态调度,还能在主模型限流或故障时自动降级,提升整体可用性。 ## 一、多模型接入的常见架构 最轻量的方式不是分别对接每家厂商 SDK,而是选择一个兼容 OpenAI Chat Completions 协议的 API 网关或中转服务。这样业务代码只需维护一套请求格式,通过 `model` 参数切换不同模型,例如 DeepSeek、Qwen、Claude、Gemini。 ## 二、基础代码示例 以下使用 OpenAI Python SDK 封装一个多模型客户端: ```python import os from openai import OpenAI MODELS = { "deepseek": "deepseek-chat&

By 罗本