从零到一:Python 列表操作、LLM API 调用与 Prompt 工程初探


一、初识 Python:为什么选择它?

“人生苦短,我用 Python”

在 ModelScope(魔搭)平台上打开 Notebook,敲下第一行代码:

print("My first NoteBook")

这一行简单的输出,标志着一段新旅程的开始。

相比 JavaScript,Python 的优势非常鲜明:

  • 语法简洁,接近自然语言,学习曲线平缓
  • 天然适合数学运算、NLP 与 AI 实验
  • 强数据类型,比 JS 的 Number 等弱类型更严谨
  • Notebook 环境支持"随时编写、随时运行",极适合算法探索

而 JavaScript 更擅长 Web 前端交互(动画、滚动加载、幻灯片等),两者各司其职。


二、Python List:灵活的有序容器

2.1 List 是什么?

Python 中没有像 Java/C++ 那样的内置静态数组。list 是 Python 的核心数据结构之一,具备以下特点:

特性说明
有序元素按插入顺序排列,可通过索引访问
可变支持增删改操作
动态长度无需预先指定容量,类似 JavaScript 的 []
类型自由同一个 list 可以混合存放不同类型的值
L = ["1", "2", "3", "4", "5"]

2.2 取前 N 项:循环 vs 切片

方式一:for 循环 + append

r = []
n = 3
for i in range(n):
    r.append(L[i])
# 结果:['1', '2', '3']

range(n) 生成 0n-1 的整数序列,这是 Python 遍历的基础模式。

方式二:切片(Slice)—— Python 的优雅所在

L[:3]    # 前三项
L[1:3]   # 索引 1、2
L[-2:]   # 最后两项:['4', '5']

切片语法 [start:stop:step] 是 Python 的一大亮点,大幅减少冗余代码。

2.3 切片进阶:步长与数字列表

L = list(range(100))

L[:10]     # 前十项:[0, 1, 2, ..., 9]
L[-10:]    # 后十项:[90, 91, ..., 99]
L[:10:2]   # 前十项中每隔一个取一个:[0, 2, 4, 6, 8]
L[::5]     # 每隔五个取一个:[0, 5, 10, 15, ..., 95]

步长参数让切片具备了"采样"能力,在数据处理场景中非常实用。

2.4 切片同样适用于字符串

'ABCDEFG'[:3]   # 'ABC'
'ABCDEFG'[::2]  # 'ACEG'

字符串在 Python 中本质上是字符的有序序列,切片操作完全通用。


三、算法练习:实现 trim() 去除首尾空格

在这里插入图片描述

方案一:调用内置方法

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

简洁直接,但了解底层原理更重要。

方案二:双指针实现(不借助 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

思路解析:

  • left 指针从左向右移动,跳过所有前置空格
  • right 指针从右向左移动,跳过所有后置空格
  • 最终通过切片 s[left:right] 截取中间有效内容

这道题将双指针算法切片操作融为一体,是理解 Python 字符串处理的绝佳练习。


四、初调 LLM API:DeepSeek + OpenAI SDK

4.1 环境与依赖

ModelScope 平台内置了 openai 库,可以通过兼容接口调用 DeepSeek 等第三方大模型:

from openai import OpenAI

client = OpenAI(
    api_key="your-api-key",
    base_url="https://api.deepseek.com/v1"
)

在这里插入图片描述

注意:Python 中不需要 new 关键字,直接调用构造函数即可完成实例化,这是与 Java/C++ 的一个重要区别。

4.2 封装调用函数

COMPLETION_MODEL = "deepseek-chat"

def get_response(prompt):
    response = client.chat.completions.create(
        model=COMPLETION_MODEL,
        messages=[
            {"role": "user", "content": prompt}
        ]
    )
    return response.choices[0].message.content

结构清晰:构建 messages 列表 → 调用 create → 取出 choices[0].message.content,这是目前大多数 LLM API 的通用范式。


五、Prompt 工程初体验:让 AI 生成电商文案

5.1 任务背景

有一款工厂现货产品:PVC 充气青蛙夜市地摊热卖充气玩具发光蛙儿童水上玩具。目标是借助 LLM 快速生成适合亚马逊平台的英文商品信息。

5.2 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_point and price_range

Prompt 设计要点:

  • 明确角色与场景:指定平台(Amazon)、语言(English)
  • 结构化任务拆解:用编号列出三个子任务,逻辑清晰
  • 约束输出格式:要求返回 JSON,并指定字段名,便于程序解析

5.3 模型输出结果

{
  "title": "Fun Inflatable Light-Up Frog Toy for Kids – Perfect for Night Market, Pool, & Beach Play",
  "selling_point": [
    "Glows in the dark with built-in LED lights for exciting nighttime play.",
    "Durable PVC material withstands rough outdoor use, perfect for water and land.",
    "Lightweight and easy to inflate, deflate, and carry for travel or storage.",
    "Great for 夜市 (night market) selling, pool parties, beach trips, or bath time.",
    "Bright, cute frog design attracts children and adds fun to any summer activity."
  ],
  "price_range": "USD 4.99 – USD 9.99"
}

一个原本需要人工撰写的电商文案任务,在精心设计的 Prompt 下,几秒内完成。这正是 LLM 在实际业务场景中的价值所在。


六、总结与反思

今天的学习串联起了三个层次:

Python 基础语法
      ↓
List / 切片 / 双指针算法
      ↓
LLM API 调用 + Prompt 设计

几点核心体会:

  1. 切片是 Python 的灵魂之一,用好切片能极大提升代码优雅度
  2. 双指针是经典算法思维,从 trim 练起,触类旁通
  3. LLM API 的调用门槛并不高,关键在于理解 messages 的对话结构
  4. Prompt 是与 AI 沟通的语言,结构化、有约束的 Prompt 输出更稳定、更可用
  5. ModelScope Notebook 是学习 AI/Python 的绝佳环境,中国开发者的 Hugging Face 替代方案
Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐