Python 入门 + 调用 LLM API:从 List 切片到商品文案生成

Python List 切片与 LLM API 调用实战指南

本文系统讲解 Python 列表切片的核心语法,并演示如何通过 OpenAI 兼容接口调用大语言模型,实现结构化商品文案的自动生成。

前言

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


一、Python 列表(List)基础

1.1 列表的特性

Python 中没有像 Java 或 C++ 那样的固定长度数组,取而代之的是 List------一个灵活、有序、可动态修改的通用容器:

python 复制代码
names = ["张三", "李四", "王五", "赵六", "刘七"]

列表的核心特性:

特性 说明
动态长度 无需预先指定容量,随时增删元素
类型不约束 同一个列表可存储不同类型的数据
有序可修改 支持索引访问和原地修改

1.2 基本操作示例

python 复制代码
L = ["张三", "李四", "王五", "赵六", "刘七"]

# 传统方式取前三个元素
r = []
for i in range(3):      # range(n) 生成 0 到 n-1 的整数序列
    r.append(L[i])
# 结果:['张三', '李四', '王五']

上述代码虽然可以运行,但较为繁琐。Python 提供了更简洁的解决方案------切片。


二、切片(Slice):Python 的高效元素截取

2.1 基本语法

切片是 Python 中用于截取序列(列表、字符串等)部分元素的语法,格式为:

python 复制代码
sequence[start:stop:step]
参数 说明
start 起始索引(包含),省略则默认为 0
stop 结束索引(不包含),省略则默认为序列长度
step 步长,省略则默认为 1

2.2 常用示例

python 复制代码
L = ["张三", "李四", "王五", "赵六", "刘七"]

L[0:3]   # ['张三', '李四', '王五']  --- 从索引 0 到 2
L[:3]    # ['张三', '李四', '王五']  --- 省略 start,默认从 0 开始
L[1:3]   # ['李四', '王五']          --- 从索引 1 到 2
L[-2:]   # ['赵六', '刘七']          --- 负数索引,取最后两个

2.3 进阶用法

python 复制代码
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]      --- 反转序列

2.4 字符串切片

字符串作为序列类型,同样支持切片操作:

python 复制代码
text = "ABCDEFG"

text[:3]     # 'ABC'
text[::2]    # 'ACEG'
text[::-1]   # 'GFEDCBA'

2.5 实战:手写 trim 函数

利用切片和双指针思想,实现去除字符串首尾空格的功能:

python 复制代码
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

实现思路

  1. 左指针从左向右移动,跳过前导空格
  2. 右指针从右向左移动,跳过尾随空格
  3. 使用切片 s[left:right] 截取有效内容

三、调用大语言模型 API

3.1 LLM 接口生态概述

当前大语言模型 API 的生态格局:

厂商 代表模型 接口特点
OpenAI GPT 系列 行业标准,Completion/Chat API
部分国内厂商 各自主模型 兼容 OpenAI 接口格式
Anthropic Claude 自有接口规范
Google Gemini 自有接口规范

关键优势:由于 OpenAI 的接口已成为事实标准,许多厂商选择兼容该格式,开发者只需学习一套调用方式即可切换不同模型。

3.2 环境准备

安装 OpenAI 官方 Python SDK:

bash 复制代码
pip install openai

3.3 客户端初始化

python 复制代码
from openai import OpenAI

client = OpenAI(
    api_key="your-api-key",              # API 密钥
    base_url="https://your-endpoint/v1"  # API 服务端点
)

COMPLETION_MODEL = "your-model-name"

注:Python 中实例化对象无需 new 关键字,直接调用构造函数即可。

3.4 Prompt 设计原则

高质量的 Prompt 应遵循以下原则:

原则 说明 示例
目标清晰 明确表达任务目标 "Compose product title within 20 words"
分步描述 将复杂任务拆分为步骤 使用 1/2/3 编号
格式约束 指定输出格式便于解析 "Output in JSON format"

3.5 完整实战:商品文案生成

以下示例演示如何调用 LLM API 为中文商品生成英文 Amazon 文案:

python 复制代码
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.content

print(get_response(prompt))

3.6 输出结果

json 复制代码
{
  "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:交互式开发环境

4.1 核心特性

Jupyter Notebook(.ipynb)是一种广泛使用的交互式开发环境:

  • 代码单元(Cell):独立运行代码片段
  • 文本单元(Markdown Cell):记录笔记和文档
  • 即时输出:运行结果直接显示在代码下方
  • 适合场景:数据分析、机器学习实验、学习记录

4.2 与传统开发方式的对比

复制代码
传统 .py 文件开发流程:
编写完整代码 → 运行脚本 → 查看结果 → 调试修改

Notebook 开发流程:
编写代码片段 → 即时运行 → 查看结果 → 记录笔记 → 继续编写

Notebook 的即时反馈机制显著提升了学习和实验效率。


五、Python 与 JavaScript 对比速查

对于前端开发者,以下对比有助于快速理解 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()

六、总结

本文系统介绍了以下内容:

  1. Python List:动态、灵活的通用容器
  2. Slice 切片[start:stop:step] 语法,高效截取序列元素
  3. LLM API 调用:通过 OpenAI 兼容接口调用大语言模型
  4. Prompt 工程:目标清晰、分步描述、格式约束
  5. Jupyter Notebook:交互式开发环境,适合学习与实验

掌握这些基础后,可以进一步探索更复杂的 LLM 应用场景,如多轮对话、函数调用(Function Calling)、流式输出等高级特性。


标签Python LLM API Slice Prompt Engineering

相关推荐
兵慌码乱5 小时前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot7 小时前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海12 小时前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱14 小时前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
曲幽19 小时前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
荣码19 小时前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱1 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理
金銀銅鐵1 天前
[Python] 体验用欧几里得算法计算最大公约数的过程
python·数学
FreakStudio1 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
用户0332126663671 天前
使用 Python 从零创建 Word 文档
python