python-docx Skill功能概述python-docx Skill是一项面向实际任务的技能,主要用于本Skill提供使用python-docx生成专业Word文档的标准方法和最佳实践;生成安全服务方案文档;核心要点生成技术架构设计文档;生成任何需要专业排版的Word文档;核心库 : python-docx;使用与执行辅助库 : docx.shared , docx.enum , docx.oxml.ns;标准代码模板;1. 文档初始化;2. 字体设置(必须!它将相关步骤、工具调用和结果整理方式集
在mac端notebook中用python 3.9调用gemini api v1beta需手动构造http请求,禁用官方sdk,配置api密钥于.env文件(不加引号),请求必须包含safetysettings字段,响应解析需检查candidates是否存在并按v1beta结构提取text。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Mac端Notebook中用Python 3.9调用Gemini API v1beta,需绕过官方未正式支持的限制,手动构造HTTP请求并处理认证与响应格式。官方gemini-python SDK当前(2024年中)仅支持v1,不兼容v1beta端点,直接pip install google-generativeai会失败或调用错误版本。
确认Python环境与依赖
打开终端,执行which python3.9确认已安装Python 3.9;若未安装,用Homebrew运行brew install python@3.9。注意:系统自带Python不可用于此场景,必须使用独立安装的3.9版本。
创建专用虚拟环境:python3.9 -m venv gemini-beta-env → source gemini-beta-env/bin/activate。
安装必要依赖:pip install requests python-dotenv。不要安装google-generativeai,它强制绑定v1端点,会干扰v1beta调用逻辑。
获取并配置API密钥
访问Google AI Studio,创建新项目→启用Gemini API→生成API密钥。密钥仅显示一次,复制后立即保存。
在Notebook所在目录新建.env文件,写入:GEMINI_API_KEY=your_actual_api_key_here。注意:密钥字符串【不能加引号】,否则请求头会多出双引号导致401错误。
在Notebook首单元格运行:from dotenv import load_dotenv; load_dotenv(),确保密钥被正确加载。
构造v1beta请求并发送
方法一:基础文本生成请求
在Notebook新单元格中粘贴以下代码:
import requests<br>import os<br><br>api_key = os.getenv("GEMINI_API_KEY")<br>url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key={api_key}"<br><br>payload = {<br> "contents": [{<br> "parts": [{"text": "用中文写一句关于秋天的五言诗"}]<br> }]<br>}<br><br>response = requests.post(url, json=payload)<br>print(response.json())
运行后检查输出是否含response.candidates字段——若返回"error": {"code": 403...},说明密钥无效或项目未启用API;若返回"error": {"code": 400...},大概率是payload结构不符合v1beta要求(例如误用v1的messages字段)。
方法二:带安全设置的请求(必需)
v1beta默认拒绝高风险内容,必须显式传入safetySettings,否则多数请求会静默失败:
"safetySettings": [<br> {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE"},<br> {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE"},<br> {"category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE"},<br> {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"}<br>]
将这段字典插入payload顶层(与contents同级),否则请求会被拦截且无明确错误提示。
解析响应并提取文本
第一步:检查响应状态码是否为200
第二步:从response.json()中提取["candidates"][0]["content"]["parts"][0]["text"]。注意:v1beta响应结构与v1不同,text在parts内,而非text字段直挂于candidate下。
第三步:捕获常见异常——当模型拒绝回答时,candidates可能为空列表,直接取索引会触发IndexError。务必用if response_json.get("candidates"):判断后再取值。
这一步操作起来很简单,直接把response.json()打印出来看结构就行,别硬记路径。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










