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

5 阅读7分钟

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

从 Python 基础语法到调用大模型 API,这篇文章带你用最少的代码实现一个完整的 AI 商品文案生成器。

前言

今天课程的内容跨度很大——前半部分学习了 Python 基础语法(List、Slice),后半部分直接上手在 ModelScope 平台上调用 DeepSeek 的 API,用 LLM 生成商品文案。

这篇文章将完整记录学习过程,从 Python List 的基本操作,到手写 trim 函数,再到调用大模型 API 生成结构化 JSON 输出。


一、Python vs JavaScript:前端开发者的 Python 入门

1.1 为什么学 Python?

特性JavaScriptPython
擅长领域页面展示、交互机器学习、爬虫、数据分析
数值类型只有 Number(无浮点/高精度区分)int、float、Decimal 等丰富类型
适合计算❌ 不适合✅ 非常适合
数组/列表ArrayList(更灵活)
学习来源JS 借鉴了 Python 的很多特性

💡 关键认知:JS 特别适合做页面展示和交互,Python 适合机器学习、爬虫、数据分析。两者不是替代关系,而是互补关系。

1.2 Notebook:边写代码边记录

课程使用了 Jupyter Notebook.ipynb 文件),这是一种非常流行的交互式开发环境:

Notebook 的特点

├── 代码单元(Code Cell):写代码,立即执行
├── 文本单元(Markdown Cell):写笔记,支持 Markdown
├── 输出区域:直接显示运行结果
└── 适合场景:数据分析、学习、写报告

📌 人生苦短,我用 Python——Notebook 让学习和实验变得非常高效。


二、Python List:灵活的通用容器

2.1 List 基本特性

Python 中没有 Java/C++ 那样的内置数组,List 是最常用的容器

L = ["张三", "李四", "王五", "赵六", "刘七"]

List 的核心特性:

特性说明对比 JS
动态长度无需指定容量和 JS [] 一样
类型不约束可以混合存储不同类型和 JS 一样
有序可修改支持增删改查和 JS 一样

2.2 基本操作

L = ["张三", "李四", "王五", "赵六", "刘七"]

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

三、Slice 切片:Python 的杀手级特性

3.1 什么是切片?

切片(Slice) 大大简化了取部分元素的操作,是 Python 中最优雅的特性之一。

L = ["张三", "李四", "王五", "赵六", "刘七"]

L[0:3]    # ['张三', '李四', '王五']  从索引 0 到 2
L[:3]     # ['张三', '李四', '王五']  省略起始,从 0 开始
L[1:3]    # ['李四', '王五']          从索引 1 到 2
L[-2:]    # ['赵六', '刘七']          最后两个元素

3.2 切片语法详解

切片语法:L[start : stop : step]

┌───────┬──────────────────────────────────┐
│ start │ 起始索引(包含),省略则为 0       │
├───────┼──────────────────────────────────┤
│ stop  │ 结束索引(不包含),省略则到末尾    │
├───────┼──────────────────────────────────┤
│ step  │ 步长,省略则为 1                   │
└───────┴──────────────────────────────────┘

3.3 进阶切片操作

L = list(range(100))  # 生成 [0, 1, 2, ..., 99]

L[:10]      # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]    前 10 个
L[-10:]     # [90, 91, 92, ..., 99]              最后 10 个
L[:10:2]    # [0, 2, 4, 6, 8]                    前 10 个,每隔 1 个取
L[::5]      # [0, 5, 10, 15, ..., 95]            每隔 5 个取

3.4 切片也适用于字符串

'ABCDEFG'[:3]     # 'ABC'      前 3 个字符
'ABCDEFG'[::2]    # 'ACEG'     每隔 1 个字符取

🎯 切片是 Python 中最 Pythonic 的特性之一,一行代码替代了其他语言中的循环操作。


四、实战:手写 trim 函数

4.1 Python 内置方式

def trim(s):
    return s.strip()

print(trim("    hello world    "))
# hello world

4.2 用切片 + 双指针手写实现

不用 strip(),利用切片和双指针实现:

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

4.3 执行过程图解

原始字符串:"   hello world "

Step 1: left 指针向右移动
"   hello world "
 ^^^
 left=0,1,2left=3(找到 'h')

Step 2: right 指针向左移动
"   hello world "
                ^
 right=15,14right=13(找到 'd')

Step 3: 切片截取
s[3:13] → "hello world"

💡 双指针 + 切片:这是算法面试中常见的思路,既练习了指针操作,又展示了切片的威力。


五、调用 LLM API:商品文案生成

5.1 ModelScope 平台

ModelScope 是阿里推出的开源模型社区:

功能说明
Models开源模型发布
Datasets数据集提供
NLP 实验在线实验环境
内置 OpenAI SDK直接调用各大 LLM

5.2 LLM 接口生态

LLM 厂商接口兼容性

OpenAI(业内标准)
├── 基于 Google 开源的 Transformer 架构
├── 引领了 2022 年底的生成式 AI 浪潮
└── Completion API 成为事实标准

兼容 OpenAI 的厂商
├── DeepSeek  完全兼容
├── Claude(Anthropic)部分兼容
└── Gemini(Google)部分兼容

5.3 完整代码:调用 DeepSeek API

from openai import OpenAI

# 创建客户端(兼容 OpenAI 接口)
client = OpenAI(
    api_key="sk-xxx",                      # 替换为你的 API Key
    base_url="https://api.deepseek.com/v1"  # DeepSeek 的接口地址
)

COMPLETION_MODEL = "deepseek-chat"

# 构造 Prompt
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
"""

# 调用 API
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))

5.4 运行结果

{
  "title": "Inflatable PVC Frog Toy with LED Light for Kids – Night Market, Pool, and Beach Fun",
  "selling_points": [
    "Eye-catching LED lights make the frog glow at night, perfect for夜市 stalls and evening play.",
    "Made from durable PVC material, safe for water play in pools, lakes, or beaches.",
    "Lightweight and easy to inflate—great for tossing, catching, and floating fun.",
    "Popular hot-selling design for children's parties, carnivals, and outdoor events.",
    "Compact when deflated, convenient for storage and travel."
  ],
  "price_range": "$8.99 – $14.99"
}

🚀 从中文商品名到完整的英文 Amazon 商品详情,LLM 的能力令人惊叹!


六、Prompt Engineering:写好提示词的三个关键

6.1 课程中总结的 Prompt 技巧

写好 Prompt 的三个关键

1️⃣ 清晰且详细地表达目标
   ❌ "帮我写个商品介绍""Compose human readable product title used on Amazon in english within 20 words"

2️⃣ 分步骤描述需求
   1. 写标题(20 词以内)
   2.5 个卖点
   3. 评估价格区间

3️⃣ 约束返回内容的格式
   ✅ "Output the result in json format"
   ✅ 指定字段名:title, selling_points, price_range

6.2 为什么格式约束很重要?

# 如果不约束格式,LLM 可能返回:
"""
Sure! Here's the product info:
Title: XXX
Price: YYY
...
"""
# 纯文本,难以程序化处理

# 约束 JSON 格式后:
{"title": "XXX", "selling_points": [...], "price_range": "YYY"}
# 可以直接用 json.loads() 解析,进入后续流程

🎯 约束输出格式 = 为后续自动化操作铺路。这是 FDE(前沿部署工程师)的核心思维。


七、知识图谱

📚 Day 9 知识图谱

Python 基础
├── Notebook(.ipynb)
│   ├── 代码单元 + 文本单元
│   └── 适合学习、数据分析
│
├── List 列表
│   ├── 动态长度,类型不约束
│   ├── 和 JS Array 类似
│   └── range() 生成整数序列
│
└── Slice 切片
    ├── L[start:stop:step]
    ├── 省略规则
    ├── 负数索引
    └── 适用于字符串

算法实践
└── 手写 trim 函数
    ├── 双指针思路
    └── 切片截取

LLM API 调用
├── ModelScope 平台
│   ├── 阿里开源模型社区
│   └── 内置 OpenAI SDK
│
├── LLM 接口生态
│   ├── OpenAI(业内标准)
│   ├── DeepSeek(兼容 OpenAI)
│   ├── Claude / Gemini
│   └── Transformer 架构
│
└── Prompt Engineering
    ├── 清晰详细的目标
    ├── 分步骤描述
    └── 约束输出格式(JSON)

八、Python vs JS 速查对比

作为前端开发者,用 JS 类比来学习 Python 是最高效的方式:

操作JavaScriptPython
创建列表[1, 2, 3][1, 2, 3]
取前三个arr.slice(0, 3)L[:3]
最后两个arr.slice(-2)L[-2:]
每隔一个arr.filter((_, i) => i % 2 === 0)L[::2]
去除空格str.trim()str.strip()
字符串长度str.lengthlen(str)
for 循环for (let i = 0; i < n; i++)for i in range(n):
导入模块import xxx from 'xxx'from xxx import xxx
实例化new Client()Client()(不需要 new)

结语

今天的课程让我感受到了 Python + LLM API 的强大组合:

  • Python 提供了简洁优雅的语法(List、Slice)
  • LLM API 提供了强大的 AI 能力(商品文案生成)
  • Prompt Engineering 是连接两者、控制输出的关键

作为前端开发者,学习 Python 不是为了替代 JS,而是为了打开 AI 和数据领域的大门

希望这篇文章对你有帮助!如果有任何问题,欢迎在评论区交流。


📌 参考资源


📌 文章标签 Python LLM DeepSeek API调用 Prompt Engineering ModelScope 学习笔记


如果这篇文章对你有帮助,别忘了点赞、收藏、关注三连支持一下~你的鼓励是我持续输出的动力! 💪