站点图标 高效码农

Google Gen AI SDK完整指南:集成Gemini与Vertex AI开发

使用Google Gen AI SDK实现生成式AI应用开发指南

PyPI版本

本文面向开发者,系统讲解如何通过Google Gen AI Python SDK快速接入谷歌生成式AI能力。该工具支持Gemini开发者API和Vertex AI平台,提供从模型调用到高级功能的全流程解决方案。


一、SDK核心功能全景解读

1.1 核心能力概览

  • 多平台支持:同时兼容Gemini开发者API与Vertex AI企业级服务
  • 全流程开发:包含内容生成、文件处理、模型调优、批量预测等完整功能链
  • 高效交互模式:支持同步/异步调用、流式响应、自动函数调用等高级特性
  • 企业级扩展:提供模型缓存、内容审核、安全设置等生产级功能

1.2 典型应用场景

  • 智能客服对话系统构建
  • 多模态内容生成(文本/图像/视频)
  • 企业知识库增强型问答
  • 自动化数据处理流水线

二、开发环境快速搭建

2.1 安装与基础配置

pip install google-genai

2.2 客户端初始化

2.2.1 Gemini开发者API模式

from google import genai
client = genai.Client(api_key='YOUR_API_KEY')

2.2.2 Vertex AI企业模式

client = genai.Client(
    vertexai=True,
    project='your-project-id',
    location='us-central1'
)

2.2.3 环境变量配置技巧

# Gemini模式
export GOOGLE_API_KEY='your-api-key'

# Vertex模式
export GOOGLE_GENAI_USE_VERTEXAI=true
export GOOGLE_CLOUD_PROJECT='your-project-id'
export GOOGLE_CLOUD_LOCATION='us-central1'

三、生成式模型核心操作

3.1 基础文本生成

response = client.models.generate_content(
    model='gemini-2.0-flash-001',
    contents='解释量子计算的基本原理'
)
print(response.text)

3.2 多模态内容处理

3.2.1 图像分析示例

image_part = types.Part.from_uri(
    'gs://generativeai-downloads/images/scones.jpg',
    'image/jpeg'
)
response = client.models.generate_content(
    model='gemini-2.0-flash-001',
    contents=['描述这张图片', image_part]
)

3.2.2 本地文件处理

with open('local_image.jpg''rb'as f:
    image_bytes = f.read()
    
response = client.models.generate_content(
    model='gemini-2.0-flash-001',
    contents=[
        '分析这张图片',
        types.Part.from_bytes(image_bytes, 'image/jpeg')
    ]
)

3.3 流式响应处理

for chunk in client.models.generate_content_stream(
    model='gemini-2.0-flash-001',
    contents='详细说明区块链技术原理'
):
    print(chunk.text, end='')

四、高级功能开发实践

4.1 函数调用集成

4.1.1 自动函数调用

def get_stock_price(symbol: str) -> float:
    """获取实时股票价格"""
    # 实现实际数据获取逻辑
    return 175.5

response = client.models.generate_content(
    model='gemini-2.0-flash-001',
    contents='苹果公司当前股价是多少?',
    config=types.GenerateContentConfig(tools=[get_stock_price])

4.1.2 手动函数声明

weather_func = types.FunctionDeclaration(
    name='get_weather',
    description='获取指定地点天气',
    parameters=types.Schema(
        type='OBJECT',
        properties={'location': types.Schema(type='STRING')}
    )
)

4.2 内容安全控制

response = client.models.generate_content(
    model='gemini-2.0-flash-001',
    config=types.GenerateContentConfig(
        safety_settings=[
            types.SafetySetting(
                category='HARM_CATEGORY_HATE_SPEECH',
                threshold='BLOCK_ONLY_HIGH'
            )
        ]
    )
)

4.3 结构化输出控制

class CompanyInfo(BaseModel):
    name: str
    founded: int
    industry: str
    revenue: float

response = client.models.generate_content(
    model='gemini-2.0-flash-001',
    contents='提供谷歌公司的基本信息',
    config=types.GenerateContentConfig(
        response_schema=CompanyInfo,
        response_mime_type='application/json'
    )
)

五、企业级功能实现

5.1 模型调优与管理

5.1.1 创建调优任务

tuning_job = client.tunings.tune(
    base_model='gemini-1.5-pro-002',
    training_dataset=types.TuningDataset(
        gcs_uri='gs://your-training-data'
    ),
    config=types.CreateTuningJobConfig(
        epoch_count=5,
        tuned_model_display_name='custom-model-v1'
    )
)

5.1.2 调优模型使用

response = client.models.generate_content(
    model=tuning_job.tuned_model.endpoint,
    contents='根据定制模型回答...'
)

5.2 批量预测处理

batch_job = client.batches.create(
    model='gemini-1.5-flash-002',
    src='bq://project.dataset.table'
)

while batch_job.state not in ['SUCCEEDED''FAILED']:
    time.sleep(60)
    batch_job = client.batches.get(batch_job.name)

5.3 文件缓存优化

cached_content = client.caches.create(
    model='gemini-1.5-pro-002',
    config=types.CreateCachedContentConfig(
        contents=[types.Content(parts=[
            types.Part.from_uri('gs://doc1.pdf''application/pdf')
        ])],
        ttl='86400s'  # 24小时缓存
    )
)

六、性能优化与调试

6.1 Token计算与优化

token_info = client.models.count_tokens(
    model='gemini-2.0-flash-001',
    contents='需要计算token的文本内容'
)
print(f"总token数:{token_info.total_tokens}")

6.2 错误处理最佳实践

from google.genai import errors

try:
    response = client.models.generate_content(
        model='invalid-model',
        contents='测试内容'
    )
except errors.APIError as e:
    print(f"错误代码:{e.code}")
    print(f"错误详情:{e.message}")

6.3 异步处理模式

async def async_generate():
    chat = await client.aio.chats.create(model='gemini-2.0-flash-001')
    response = await chat.send_message('异步生成内容')
    print(response.text)

七、典型应用案例解析

7.1 智能文档分析系统

# 上传PDF文档
pdf_file = client.files.upload(file='research.pdf')

# 构建缓存内容
cached_content = client.caches.create(
    model='gemini-1.5-pro-002',
    config=types.CreateCachedContentConfig(
        contents=[types.Content(parts=[
            types.Part.from_uri(pdf_file.uri, 'application/pdf')
        ])
    )
)

# 执行文档问答
response = client.models.generate_content(
    model='gemini-1.5-pro-002',
    contents='总结文档核心观点',
    config=types.GenerateContentConfig(
        cached_content=cached_content.name
    )
)

7.2 多模态内容生成平台

# 图像生成
image_response = client.models.generate_images(
    model='imagen-3.0-generate-002',
    prompt='未来城市数字艺术风格',
    config=types.GenerateImagesConfig(
        number_of_images=3,
        output_mime_type='image/png'
    )
)

# 视频生成
video_operation = client.models.generate_videos(
    model='veo-2.0-generate-001',
    prompt='太空探索主题动画短片',
    config=types.GenerateVideosConfig(
        duration_seconds=10,
        fps=30
    )
)

八、最佳实践总结

  1. 版本控制:生产环境建议指定稳定API版本

    client = genai.Client(
        http_options=types.HttpOptions(api_version='v1')
    
  2. 资源管理:及时清理临时文件和缓存

    client.files.delete(name='temp-file-id')
    
  3. 监控优化:定期检查模型使用指标

    for model in client.models.list():
        print(f"模型 {model.name} 状态:{model.state}")
    
  4. 安全防护:结合IAM策略控制API访问权限

通过本指南的系统学习,开发者可以快速掌握Google Gen AI SDK的核心使用方法,构建符合企业级标准的生成式AI应用。建议结合官方文档和实际业务需求,持续探索更多高级功能的创新应用场景。

– www.xugj520.cn –

退出移动版