|
```bash
pip install --upgrade openai
pip install python-dotenv
```
为什么要配置 API Base:大陆无法直接访问 api.openai.com,需要代理或中转地址。
Key 放在环境变量里(推荐),在项目目录建 `.env` 文件:
```bash
OPENAI_API_KEY="sk-xxxx"
OPENAI_BASE_URL="https://api.fe8.cn/v1"
```
ChatGPT 与 OpenAI API 的关系:
- ChatGPT 是面向终端用户的聊天产品(3.5 免费,GPT-4 及插件收费,Plus 需国外银行卡)
- OpenAI API 是面向开发者的模型接口,按量计费
- 注册了 ChatGPT 账号 ≠ 可以免费使用 API
|
|
```python
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
# 加载 .env 到环境变量,自动读取 OPENAI_API_KEY 和 OPENAI_BASE_URL
_ = load_dotenv(find_dotenv())
client = OpenAI()
messages = [
{"role": "system", "content": "七三笔记网站是一个关于AI的学习网站"}, # 注入新知识
{"role": "user", "content": "七三笔记是什么网站"},
]
chat_completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=messages
)
print(chat_completion.choices[0].message.content)
```
system 消息用于"注入新知识/设定角色",user 消息是真正的问题。
同样的 key 也可以直接写在代码里(`OpenAI(api_key=..., base_url=...)`),但不推荐提交到代码库。
|
|
```python
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())
client = OpenAI()
response = client.completions.create(
model="gpt-3.5-turbo-instruct",
prompt="请讲一个笑话,关于日常",
max_tokens=512,
stream=True # 流式:逐 token 返回
)
for chunk in response:
print(chunk.choices[0].text, end='')
```
返回结构(chat.completions):`response.choices[0].message.content` 是正文;
`usage` 里有 `prompt_tokens / completion_tokens / total_tokens`,计费按 token 数。
|
|
| 参数 | 作用 | 建议 |
|------|------|------|
| temperature | 采样温度,控制随机性 | 任务型 0~0.3;创意型 0.7~1.0 |
| top_p | 核采样,累计概率截断 | 与 temperature 二选一调,不要同时大改 |
| max_tokens | 最大生成 token 数 | 按任务长度给足 |
| stream | 流式输出 | 对话类产品建议开 |
| model | 模型名 | 按成本/能力选型 |
temperature 的数学含义——对 logits 做带温度的 softmax:
$$p_i = \frac{e^{z_i/T}}{\sum_j e^{z_j/T}}$$
T→0 时退化为 argmax(输出确定);T 越大分布越接近均匀(输出随机)。
|
|
- 文心一言使用:https://yiyan.baidu.com/ ,点"新建对话"直接提问
- 开发者入口:https://yiyan.baidu.com/developer
- 百度智能云千帆 ModelBuilder:https://cloud.baidu.com/doc/WENXINWORKSHOP/index.html
- 应用创建:https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application
|
|
用 API Key / Secret Key 换 access_token(文档:https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Ilkkrb0i5):
```python
import requests
import json
url = "https://aip.baidubce.com/oauth/2.0/token" \
"?client_id=你的APIKey&client_secret=你的SecretKey&grant_type=client_credentials"
response = requests.request(
"POST", url,
headers={'Content-Type': 'application/json', 'Accept': 'application/json'},
data=json.dumps("")
)
print(response.text) # 返回里取 access_token
```
curl 等价写法:
```bash
curl -X POST 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API Key]&client_secret=[Secret Key]' \
-H 'Content-Type: application/json'
```
|
|
langchain 调用千帆(其它厂商模型分装在 langchain_community 底包中):
```python
import os
os.environ["qianfan_ak"] = "你的ak"
os.environ["qianfan_sk"] = "你的sk"
from langchain_community.chat_models import QianfanChatEndpoint
from langchain_core.messages import HumanMessage
# 需先在千帆控制台开通一个模型服务
llm = QianfanChatEndpoint(
qianfan_ak=os.getenv('qianfan_ak'),
qianfan_sk=os.getenv('qianfan_sk')
)
ret = llm.invoke([HumanMessage(content="你是谁")])
print(ret.content)
```
|
|
智谱开放平台(https://open.bigmodel.cn)同样是 OpenAI 风格接口:
```bash
curl https://open.bigmodel.cn/api/paas/v4/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer 你的key" \
-d '{
"model": "glm-4-0520",
"max_tokens": 60,
"messages": [{"role": "user", "content": "who are you"}]
}'
```
```python
import openai
client = openai.OpenAI(
api_key="your-api-key",
base_url="https://open.bigmodel.cn/api/paas/v4"
)
response = client.chat.completions.create(
model="glm-4",
messages=[{"role": "user", "content": "你好"}],
max_tokens=1024
)
```
|
|
以代理方式把 claude code 接到 GLM(ANTHROPIC_BASE_URL 指向智谱的 anthropic 兼容端点):
```bash
node --version # v20.9.0
npm install -g @anthropic-ai/claude-code
export ANTHROPIC_BASE_URL="https://open.bigmodel.cn/api/anthropic"
export ANTHROPIC_AUTH_TOKEN="你的智谱key"
cd your-project-directory
claude
```
vscode 插件方式(插件升级后需要账户登录时,配置环境变量):
```json
"claude-code.environmentVariables": [
{"name": "ANTHROPIC_BASE_URL", "value": "https://open.bigmodel.cn/api/anthropic"}
]
```
key 也可写入 `~/.claude/config.json` 的 `primaryApiKey` 字段。
使用说明:https://docs.bigmodel.cn/cn/coding-plan/overview
|
|
AI 编程要求的多维能力:**业务、编程、AI、市场营销,多维一体**。
市面常见工具:
1. Bito —— 比 Copilot 还多些创新
2. DevChat —— 前端开源,同时卖 GPT 服务
3. Cursor —— AI first 的 IDE
4. Tabnine —— 代码补全,个人基础版免费
5. 通义灵码 —— 免费,阿里云生态
6. CodeGeex —— 清华智谱,CodeGeex3Pro 免费可用
7. Comate —— 百度,有免费试用版
8. Amazon CodeWhisperer —— 免费,AWS 相关编程能力卓越
|
|
以 Copilot 为例看工作原理:
- **模型层**:最初使用 OpenAI Codex 模型,现已升级为更强模型
- **应用层**:prompt engineering。Prompt 中包含:
1. 组织上下文:光标前和光标后的代码片段
2. 获取相关代码片段:当前文件和其它打开的 tab 被切成每个 60 行的片段,
用 **Jaccard 相似度**评分取高分片段
3. 修饰上下文:用注释插入片段路径,如 `# filepath: foo/bar.py`
4. 优先级:按代码常识判断补全输入的优先级
5. 补全格式:函数/类/if-else 定义之后补全整段,其它时候只补当前行
Jaccard 相似度(衡量两个代码片段 token 集合的重合度):
$$J(A, B) = \frac{|A \cap B|}{|A \cup B|}$$
|
|
**AI 能力定律**:AI 能力的上限,是使用者的判断力
$$\text{AI 实际能力} = \min(\text{AI 能力}, \text{使用者判断力})$$
**AI 提效定律**:AI 提升的效率,与使用者的判断力成正比,与生产力成反比
$$\text{效率提升幅度} = \frac{\text{使用者判断力}}{\text{使用者生产力}}$$
解读:
1. 使用者的判断力最重要
2. 提升判断力比提升实操能力更重要——"眼高手低"者的福音
3. 广阔的视野是判断力的养料
公司推动使用的步骤:先养成提问的习惯 → 建立"AI 是结对编程小伙伴而非神"的认知 → 购买账号 → 真的用起来。
常见质疑的回应:
- "AI 给的代码直接抄就死了" → 参考 AI 效能定律,判断力先行
- "AI 写不了复杂架构" → 先以架构师身份让 AI 辅助选型(喂需求/业务文档),
再以开发者身份让 AI 逐层写业务代码
|
|
Codex 是 OpenAI 的跨平台命令行编码 agent:
```bash
# Mac / Linux
curl -fsSL https://chatgpt.com/codex/install.sh | sh
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://chatgpt.com/codex/install.ps1 | iex"
# 通用
npm install -g @openai/codex
codex --version
codex --model gpt-5.5 # 启动
codex --model gpt-5.5 --debug # 调试模式
```
交互内常用:`/model` 切换模型、`/exit` 退出、Ctrl+C 退出。
用中转地址时选 "Provide your own API key",配置 `~/.codex/config.toml`:
```toml
[models]
[models."gpt-5.5"]
provider = "openai"
base_url = "https://your-proxy.example.com/v1"
```
key 配置在同目录 auth.json 中;config.toml 建议用 vscode 打开编辑(记事本可能改变文件编码)。
|
|
可本机部署的 Tabby(https://tabby.tabbyml.com/):
- 全开源,可本机/独立本地部署,支持所有开源编程模型
```bash
# linux/windows 通用,首次执行会下载镜像
docker run --entrypoint /opt/tabby/bin/tabby-cpu -it \
-p 8080:8080 -v $HOME/.tabby:/data \
tabbyml/tabby serve --model StarCoder-1B
```
更多开源编程大模型:
1. Code Llama —— Meta 出品(7B/13B/34B/70B)
2. DeepSeek-Coder —— 1B 到 33B
3. CodeGemma —— Google 出品
4. Ziya-Coding-15B —— 深圳 IDEA 研究院
5. CodeFuse-CodeLlama-34B —— 阿里出品
6. WizardCoder —— WizardLM 出品
|
OpenAI 官方文档
千帆 ModelBuilder
智谱 coding plan