使用Google Gen AI SDK实现生成式AI应用开发指南
本文面向开发者,系统讲解如何通过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
)
)
八、最佳实践总结
-
版本控制:生产环境建议指定稳定API版本
client = genai.Client( http_options=types.HttpOptions(api_version='v1')
-
资源管理:及时清理临时文件和缓存
client.files.delete(name='temp-file-id')
-
监控优化:定期检查模型使用指标
for model in client.models.list(): print(f"模型 {model.name} 状态:{model.state}")
-
安全防护:结合IAM策略控制API访问权限
通过本指南的系统学习,开发者可以快速掌握Google Gen AI SDK的核心使用方法,构建符合企业级标准的生成式AI应用。建议结合官方文档和实际业务需求,持续探索更多高级功能的创新应用场景。
– www.xugj520.cn –