共计 3960 个字符,预计需要花费 10 分钟才能阅读完成。
环境准备
在开始之前,我们需要先配置好开发环境。以下是具体的步骤:

-
安装 Homebrew:
Homebrew 是 MacOS 上的包管理工具,安装非常简单。打开终端,运行以下命令:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" -
配置 Python 虚拟环境 :
推荐使用 Python 3.9 或更高版本。可以通过 Homebrew 安装 Python,然后创建虚拟环境:brew install python@3.9 python3.9 -m venv chatgpt-env source chatgpt-env/bin/activate
方案对比
以下是三种常见的 ChatGPT 集成方案,每种方案都有其优缺点:
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 浏览器插件 | 无需编程,开箱即用 | 功能受限,无法深度定制 | 快速测试或非开发场景 |
| 官方 API 方案 | 功能强大,支持自定义 | 需要处理 API 密钥和 SSL 证书 | 开发和生产环境 |
| 终端 curl 方案 | 轻量级,适合脚本调用 | 需要手动解析 JSON 响应 | 快速调试或自动化任务 |
浏览器插件方案
- 打开 Chrome 浏览器,进入隐私模式(Command + Shift + N)。
- 安装 ChatGPT 插件,例如 ”ChatGPT for Chrome”。
- 配置 Cookie 以确保登录状态持久化。
官方 API 方案
对于 M1/M2 芯片的 Mac,需要额外处理 SSL 证书问题。以下是 Python 代码示例:
import openai
import ssl
# 配置 SSL 证书
ssl._create_default_https_context = ssl._create_unverified_context
# 设置 API 密钥
openai.api_key = 'your-api-key'
# 调用 ChatGPT
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": "Hello, ChatGPT!"}]
)
print(response.choices[0].message.content)
终端 curl 方案
如果你更喜欢在终端中直接调用 ChatGPT,可以使用以下命令:
curl -X POST https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4","messages": [{"role":"user","content":"Hello, ChatGPT!"}]}' | jq '.choices[0].message.content'
核心代码
以下是一个完整的 Python 类实现,包含异步调用和错误处理:
import openai
from typing import List, Dict, Optional
import asyncio
class ChatGPT:
def __init__(self, api_key: str, model: str = "gpt-4"):
self.api_key = api_key
self.model = model
openai.api_key = api_key
async def async_chat(self, messages: List[Dict[str, str]]) -> Optional[str]:
try:
response = await openai.ChatCompletion.acreate(
model=self.model,
messages=messages
)
return response.choices[0].message.content
except openai.error.RateLimitError:
print("Rate limit exceeded. Please wait and try again.")
return None
except Exception as e:
print(f"An error occurred: {e}")
return None
# 使用示例
async def main():
chat = ChatGPT(api_key="your-api-key")
response = await chat.async_chat([{"role": "user", "content": "Hello!"}])
print(response)
asyncio.run(main())
性能优化
M 系列芯片加速
M 系列芯片在 numpy 计算上有显著优势。以下是一个简单的性能测试脚本:
import numpy as np
import time
# 生成大型矩阵
matrix = np.random.rand(1000, 1000)
# 测试矩阵乘法
start = time.time()
result = np.dot(matrix, matrix)
end = time.time()
print(f"Time taken: {end - start} seconds")
本地缓存策略
使用 SQLite 存储对话历史可以显著提升性能,尤其是在频繁调用 API 时。以下是实现代码:
import sqlite3
from typing import List, Dict
class ChatCache:
def __init__(self, db_path: str = "chat_cache.db"):
self.conn = sqlite3.connect(db_path)
self.cursor = self.conn.cursor()
self._create_table()
def _create_table(self):
self.cursor.execute("""
CREATE TABLE IF NOT EXISTS chat_history (
id INTEGER PRIMARY KEY AUTOINCREMENT,
role TEXT NOT NULL,
content TEXT NOT NULL,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
)
""")
self.conn.commit()
def add_message(self, role: str, content: str):
self.cursor.execute("INSERT INTO chat_history (role, content) VALUES (?, ?)",
(role, content)
)
self.conn.commit()
def get_history(self, limit: int = 10) -> List[Dict[str, str]]:
self.cursor.execute(
"SELECT role, content FROM chat_history ORDER BY timestamp DESC LIMIT ?",
(limit,)
)
return [{"role": row[0], "content": row[1]} for row in self.cursor.fetchall()]
避坑指南
MacOS 密钥链访问权限问题
如果你遇到密钥链访问权限问题,可以尝试以下命令:
security unlock-keychain
中文输入编码异常
在 Python 中处理中文时,确保使用 UTF- 8 编码:
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
代理服务器配置
对于国内开发者,可能需要配置代理服务器:
import os
os.environ["HTTP_PROXY"] = "http://your-proxy-server:port"
os.environ["HTTPS_PROXY"] = "http://your-proxy-server:port"
基准测试脚本
以下是一个简单的基准测试脚本,用于比较不同方案的性能:
import time
import openai
# 测试 API 调用延迟
def test_api_latency():
start = time.time()
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": "Hello!"}]
)
end = time.time()
print(f"API Latency: {end - start} seconds")
# 测试终端 curl 命令
def test_curl_latency():
import subprocess
start = time.time()
subprocess.run(["curl", "-X", "POST", "https://api.openai.com/v1/chat/completions", "-H", "Authorization: Bearer your-api-key", "-H", "Content-Type: application/json", "-d", '{"model":"gpt-4","messages": [{"role":"user","content":"Hello!"}]}'], capture_output=True)
end = time.time()
print(f"Curl Latency: {end - start} seconds")
# 运行测试
test_api_latency()
test_curl_latency()
希望这篇指南能帮助你在苹果电脑上高效使用 ChatGPT。如果你有任何问题或建议,欢迎在评论区留言。
正文完
