Python 作为数据科学和人工智能领域的主流语言,其简洁的语法和丰富的生态使其成为调用大模型 API 的首选工具。本文将从 Python 列表的基础操作出发,逐步深入到切片(Slice)的高级用法,最终完成一个调用 LLM API 生成 Amazon 商品文案的完整实战案例。

Python 中没有像 Java 或 C++ 那样的固定长度数组,取而代之的是 List——一个灵活、有序、可动态修改的通用容器:
names = ["张三", "李四", "王五", "赵六", "刘七"]
列表的核心特性:
| 特性 | 说明 |
|---|---|
| 动态长度 | 无需预先指定容量,随时增删元素 |
| 类型不约束 | 同一个列表可存储不同类型的数据 |
| 有序可修改 | 支持索引访问和原地修改 |
L = ["张三", "李四", "王五", "赵六", "刘七"]# 传统方式取前三个元素
r = []
for i in range(3): # range(n) 生成 0 到 n-1 的整数序列
r.append(L[i])
# 结果:['张三', '李四', '王五']
上述代码虽然可以运行,但较为繁琐。Python 提供了更简洁的解决方案——切片。
切片是 Python 中用于截取序列(列表、字符串等)部分元素的语法,格式为:
sequence[start:stop:step]
| 参数 | 说明 |
|---|---|
start | 起始索引(包含),省略则默认为 0 |
stop | 结束索引(不包含),省略则默认为序列长度 |
step | 步长,省略则默认为 1 |
L = ["张三", "李四", "王五", "赵六", "刘七"]L[0:3] # ['张三', '李四', '王五'] — 从索引 0 到 2
L[:3] # ['张三', '李四', '王五'] — 省略 start,默认从 0 开始
L[1:3] # ['李四', '王五'] — 从索引 1 到 2
L[-2:] # ['赵六', '刘七'] — 负数索引,取最后两个
L = list(range(100)) # 生成 [0, 1, 2, ..., 99]L[:10] # [0, 1, 2, ..., 9] — 前 10 个元素
L[-10:] # [90, 91, ..., 99] — 最后 10 个元素
L[:10:2] # [0, 2, 4, 6, 8] — 前 10 个,步长为 2
L[::5] # [0, 5, 10, ..., 95] — 全部元素,步长为 5
L[::-1] # [99, 98, ..., 1, 0] — 反转序列
字符串作为序列类型,同样支持切片操作:
text = "ABCDEFG"text[:3] # 'ABC'
text[::2] # 'ACEG'
text[::-1] # 'GFEDCBA'
利用切片和双指针思想,实现去除字符串首尾空格的功能:
def trim(s):
# 左指针:找到第一个非空格字符
left = 0
while left < len(s) and s[left] == ' ':
left += 1 # 右指针:找到最后一个非空格字符
right = len(s)
while right > left and s[right - 1] == ' ':
right -= 1 # 切片截取中间部分
return s[left:right]print(trim(" hello world "))
# 输出:hello world
实现思路:
s[left:right] 截取有效内容当前大语言模型 API 的生态格局:
| 厂商 | 代表模型 | 接口特点 |
|---|---|---|
| OpenAI | GPT 系列 | 行业标准,Completion/Chat API |
| 部分国内厂商 | 各自主模型 | 兼容 OpenAI 接口格式 |
| Anthropic | Claude | 自有接口规范 |
| Gemini | 自有接口规范 |
关键优势:由于 OpenAI 的接口已成为事实标准,许多厂商选择兼容该格式,开发者只需学习一套调用方式即可切换不同模型。
安装 OpenAI 官方 Python SDK:
pip install openai
from openai import OpenAIclient = OpenAI(
api_key="your-api-key", # API 密钥
base_url="https://your-endpoint/v1" # API 服务端点
)COMPLETION_MODEL = "your-model-name"
高质量的 Prompt 应遵循以下原则:
| 原则 | 说明 | 示例 |
|---|---|---|
| 目标清晰 | 明确表达任务目标 | "Compose product title within 20 words" |
| 分步描述 | 将复杂任务拆分为步骤 | 使用 1/2/3 编号 |
| 格式约束 | 指定输出格式便于解析 | "Output in JSON format" |
以下示例演示如何调用 LLM API 为中文商品生成英文 Amazon 文案:
prompt = """
Consideration product:
工厂现货PVC充气青蛙夜市地摊热卖充气玩具发光蛙儿童水上玩具1. Compose human readable product title used on
Amazon in english within 20 words.
2. Write 5 selling points for the products in Amazon.
3. Evaluate a price range for this product in U.S.Output the result in json format with
three properties called title, selling_points and
price_range
"""def get_response(prompt):
response = client.chat.completions.create(
model=COMPLETION_MODEL,
messages=[
{"role": "user", "content": prompt}
]
)
return response.choices[0].message.contentprint(get_response(prompt))
{
"title": "Inflatable PVC Frog Toy with LED Light for Kids Night Market Water Fun",
"selling_points": [
"Bright LED lights make the frog glow for exciting night play.",
"Made from durable PVC material, perfect for water and pool fun.",
"Lightweight and easy to inflate, deflate, and carry.",
"Attracts attention at markets and events, ideal for resale.",
"Safe and fun for children ages 3+, great for outdoor activities."
],
"price_range": "$8.99 - $14.99"
}
Jupyter Notebook(.ipynb)是一种广泛使用的交互式开发环境:
传统 .py 文件开发流程:
编写完整代码 → 运行脚本 → 查看结果 → 调试修改Notebook 开发流程:
编写代码片段 → 即时运行 → 查看结果 → 记录笔记 → 继续编写
Notebook 的即时反馈机制显著提升了学习和实验效率。
对于前端开发者,以下对比有助于快速理解 Python 语法:
| 操作 | JavaScript | Python |
|---|---|---|
| 创建列表 | [1, 2, 3] | [1, 2, 3] |
| 取前 N 个 | arr.slice(0, n) | lst[:n] |
| 取后 N 个 | arr.slice(-n) | lst[-n:] |
| 每隔 N 个取 | arr.filter((_, i) => i % N === 0) | lst[::N] |
| 反转序列 | arr.reverse() | lst[::-1] |
| 去除空格 | str.trim() | str.strip() |
| 字符串长度 | str.length | len(str) |
| 模板字符串 | `${name}` | f"{name}" |
| 对象实例化 | new Client() | Client() |
本文系统介绍了以下内容:
[start:stop:step] 语法,高效截取序列元素掌握这些基础后,可以进一步探索更复杂的 LLM 应用场景,如多轮对话、函数调用(Function Calling)、流式输出等高级特性。
标签:Python LLM API Slice Prompt Engineering