学 AI 应用开发前,先要补齐的Python 基础点
1. 为什么 AI 应用开发离不开 Python
Python 是 AI 应用开发中非常常见的语言,原因很简单:
- 语法简洁,适合快速验证想法。
- 第三方库丰富,AI、数据处理、Web 开发都有成熟生态。
- 很多大模型 SDK、机器学习库、数据处理工具都优先支持 Python。
- 适合从小脚本逐步扩展成完整项目。
在 AI 应用中,Python 常见用途包括:
- 调用大模型 API。
- 构造和管理 prompt。
- 读取本地文档、表格、网页内容。
- 清洗和切分文本。
- 保存模型回答。
- 搭建后端接口。
- 编写自动化脚本。
2. 变量:保存程序中的数据
变量可以理解为“给数据起一个名字”。在 AI 应用开发中,变量经常用来保存用户输入、prompt、模型名称、分析结果等。
user_question = "Python 为什么适合 AI 应用开发?"
model_name = "demo-model"
max_tokens = 1024
temperature = 0.7
print(user_question)
print(model_name)
print(max_tokens)
print(temperature)
输出示例:
Python 为什么适合 AI 应用开发?
demo-model
1024
0.7
Python 变量不需要提前声明类型,赋值时解释器会自动判断。
name = "AI 助手"
age = 1
is_active = True
print(type(name))
print(type(age))
print(type(is_active))
输出示例:
<class 'str'>
<class 'int'>
<class 'bool'>
常见基础类型:
| 类型 | 示例 | 说明 |
|---|---|---|
str |
"hello" |
字符串,常用于文本、prompt、路径 |
int |
100 |
整数,常用于数量、索引 |
float |
0.8 |
小数,常用于温度、分数 |
bool |
True |
布尔值,常用于开关判断 |
NoneType |
None |
空值,常表示暂无结果 |
3. 类型转换:让数据类型匹配场景
在实际项目中,用户输入、配置文件、接口返回值经常是字符串,但程序计算时可能需要数字或布尔值,这时就要做类型转换。
常用转换函数:
str(123)
int("123")
float("3.14")
bool(1)
示例:
max_tokens_text = "2048"
max_tokens = int(max_tokens_text)
price = 12.5
price_text = str(price)
print(max_tokens + 100)
print("价格:" + price_text)
输出示例:
2148
价格:12.5
注意:不是所有字符串都能转换成数字。
text = "AI"
try:
number = int(text)
except ValueError:
print("这个字符串不能转换成整数")
输出示例:
这个字符串不能转换成整数
这类情况在读取配置、解析用户输入时非常常见。
4. 输入和输出:最基础的人机交互
print() 用于输出信息,input() 用于接收用户输入。
name = input("请输入你的名字:")
print("你好," + name)
需要注意:input() 得到的数据永远是字符串。
age_text = input("请输入你的年龄:")
age = int(age_text)
print(age + 1)
在 AI 应用中,可以先用 input() 模拟用户问题:
question = input("请输入你想问 AI 的问题:")
prompt = "请用简洁的语言回答这个问题:" + question
print(prompt)
示例输入:
什么是 RAG?
输出示例:
请用简洁的语言回答这个问题:什么是 RAG?
5. 字符串:prompt 和文本处理的核心
AI 应用开发离不开字符串。用户问题、系统提示词、模型回答、文档内容,本质上都是字符串。
5.1 字符串的三种写法
text1 = "hello"
text2 = 'hello'
text3 = """这是一个
多行字符串"""
print(text1)
print(text2)
print(text3)
多行字符串很适合写系统提示词:
system_prompt = """
你是一个 Python 学习助手。
回答时请遵守:
1. 先给结论
2. 再给示例
3. 最后提醒常见错误
"""
print(system_prompt)
5.2 字符串拼接
user_name = "小明"
question = "Python 中 list 和 tuple 有什么区别?"
prompt = "用户" + user_name + "的问题是:" + question
print(prompt)
输出示例:
用户小明的问题是:Python 中 list 和 tuple 有什么区别?
不过,当变量比较多时,更推荐使用 f-string。
5.3 f-string 格式化
f-string 是实际项目中非常常用的字符串格式化方式。特别是一些提示词的相关模版等。
role = "Python 教练"
question = "如何学习 AI 应用开发?"
prompt = f"你是一个{role},请回答:{question}"
print(prompt)
输出示例:
你是一个Python 教练,请回答:如何学习 AI 应用开发?
还可以控制小数精度:
score = 0.87654
print(f"相似度得分:{score:.2f}")
输出示例:
相似度得分:0.88
5.4 常用字符串方法
text = " Python,AI,RAG "
clean_text = text.strip()
items = clean_text.split(",")
new_text = clean_text.replace("RAG", "检索增强生成")
print(clean_text)
print(items)
print(new_text)
输出示例:
Python,AI,RAG
['Python', 'AI', 'RAG']
Python,AI,检索增强生成
这些方法在处理文档、清洗用户输入时非常常用。
6. 判断语句:让程序根据情况做决定
判断语句用于根据条件执行不同逻辑。
score = 85
if score >= 90:
print("优秀")
elif score >= 60:
print("合格")
else:
print("需要继续学习")
输出示例:
合格
在 AI 应用中,判断语句可以用来控制流程:
question = "请帮我总结这篇文章"
if "总结" in question:
task_type = "summary"
elif "翻译" in question:
task_type = "translation"
else:
task_type = "chat"
print(task_type)
输出示例:
summary
常见比较运算符:
| 运算符 | 含义 |
|---|---|
== |
等于 |
!= |
不等于 |
> |
大于 |
< |
小于 |
>= |
大于等于 |
<= |
小于等于 |
常见逻辑运算符:
| 运算符 | 含义 |
|---|---|
and |
并且 |
or |
或者 |
not |
取反 |
示例:
is_login = True
has_api_key = False
if is_login and has_api_key:
print("可以调用 AI 服务")
else:
print("请先完成登录或配置 API Key")
7. 循环语句:批量处理数据
AI 应用经常需要批量处理文本、问题、文件和模型结果,这时就要用循环。
7.1 while 循环
while 会在条件成立时反复执行代码。
count = 1
while count <= 3:
print(f"第 {count} 次处理")
count += 1
输出示例:
第 1 次处理
第 2 次处理
第 3 次处理
7.2 for 循环
for 更适合遍历列表、字符串、字典等数据。
questions = [
"什么是机器学习?",
"什么是大模型?",
"什么是 RAG?",
]
for question in questions:
print(f"准备处理问题:{question}")
输出示例:
准备处理问题:什么是机器学习?
准备处理问题:什么是大模型?
准备处理问题:什么是 RAG?
7.3 range 的用法
for i in range(3):
print(i)
for i in range(1, 4):
print(i)
for i in range(1, 10, 2):
print(i)
range(开始, 结束, 步长) 中,结束值不包含在结果里。
7.4 break 和 continue
texts = ["第一段", "", "第三段", "STOP", "第五段"]
for text in texts:
if text == "":
continue
if text == "STOP":
break
print(text)
输出示例:
第一段
第三段
continue 表示跳过本次循环,break 表示结束整个循环。
8. 函数:封装 AI 应用中的重复逻辑
函数用于把一段可重复使用的逻辑封装起来。在langgraph中通常会封装结点,条件边的选择等。
def build_prompt(role, question):
prompt = f"你是一个{role},请回答:{question}"
return prompt
result = build_prompt("Python 老师", "函数有什么用?")
print(result)
输出示例:
你是一个Python 老师,请回答:函数有什么用?
8.1 函数参数
def user_info(name, age, city):
print(f"姓名:{name},年龄:{age},城市:{city}")
user_info("小王", 20, "杭州")
user_info(age=22, city="上海", name="小李")
第二种写法叫关键字传参,不需要严格按照参数顺序。
8.2 默认参数
def build_message(content, role="user"):
return {"role": role, "content": content}
print(build_message("你好"))
print(build_message("你是一个助手", role="system"))
输出示例:
{'role': 'user', 'content': '你好'}
{'role': 'system', 'content': '你是一个助手'}
默认参数很适合给函数提供常用配置。
8.3 多个返回值
def analyze_text(text):
length = len(text)
has_ai = "AI" in text
return length, has_ai
text_length, contains_ai = analyze_text("我正在学习 AI 应用开发")
print(text_length)
print(contains_ai)
8.4 不定长参数
def merge_prompts(*parts):
return "\n".join(parts)
prompt = merge_prompts(
"你是一个学习助手。",
"请用通俗语言解释。",
"回答不要超过 100 字。",
)
print(prompt)
*args 会把多个位置参数收集成元组,适合处理数量不固定的输入。
def show_config(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
show_config(model="demo-model", temperature=0.7, max_tokens=1024)
**kwargs 会把多个关键字参数收集成字典,适合处理配置项。
8.5 lambda 函数
lambda 适合写简单的一行函数。
scores = [0.9, 0.75, 0.88]
sorted_scores = sorted(scores, key=lambda score: score, reverse=True)
print(sorted_scores)
输出示例:
[0.9, 0.88, 0.75]
9. 常用数据容器:组织消息、配置和结果
AI 应用中的很多数据都不是单个值,而是一组数据。Python 常用容器包括列表、元组、字符串、集合和字典。
9.1 列表 list
列表用于保存一组有顺序、可修改的数据。在langgraph中有工具列表,消息列表等中有使用。
questions = ["什么是 AI?", "什么是大模型?", "什么是 RAG?"]
print(questions[0])
print(questions[-1])
questions.append("什么是 Agent?")
print(questions)
输出示例:
什么是 AI?
什么是 RAG?
['什么是 AI?', '什么是大模型?', '什么是 RAG?', '什么是 Agent?']
常用列表方法:
items = ["Python", "AI"]
items.append("RAG")
items.extend(["Agent", "FastAPI"])
items.insert(1, "大模型")
items.remove("AI")
print(items)
print(len(items))
遍历列表:
messages = ["你好", "请总结这段文本", "谢谢"]
for message in messages:
print(message)
9.2 元组 tuple
元组和列表类似,但创建后不能修改。
point = (120.1, 30.2)
print(point[0])
print(point[1])
元组适合保存不希望被修改的数据,例如固定配置、坐标、状态组合。
9.3 字符串 str
字符串本身也是一种序列,可以通过下标和切片访问。
text = "Python AI"
print(text[0])
print(text[0:6])
print(text[::-1])
输出示例:
P
Python
IA nohtyP
9.4 集合 set
集合最大的特点是去重。
tags = ["Python", "AI", "Python", "RAG"]
unique_tags = set(tags)
print(unique_tags)
集合也常用于求交集、并集、差集。
user_skills = {"Python", "SQL", "Linux"}
ai_skills = {"Python", "向量数据库", "RAG"}
print(user_skills & ai_skills)
print(user_skills | ai_skills)
print(ai_skills - user_skills)
9.5 字典 dict
字典用键值对保存数据,非常适合表示配置、JSON 风格数据、消息对象。
config = {
"model": "demo-model",
"temperature": 0.7,
"max_tokens": 1024,
}
print(config["model"])
print(config.get("temperature"))
更新和删除:
config["temperature"] = 0.5
config["timeout"] = 30
config.pop("timeout")
print(config)
遍历字典:
for key, value in config.items():
print(f"{key}: {value}")
AI 对话消息常用列表加字典来表示:
messages = [
{"role": "system", "content": "你是一个 Python 学习助手。"},
{"role": "user", "content": "请解释什么是列表。"},
]
for message in messages:
print(f"{message['role']}: {message['content']}")
9.6 容器选择建议
| 容器 | 特点 | AI 应用中的常见用途 |
|---|---|---|
list |
有序、可修改 | 多条消息、多个问题、批量文本 |
tuple |
有序、不可修改 | 固定配置、固定状态 |
str |
文本序列 | prompt、用户输入、模型回答 |
set |
去重、无序 | 标签去重、技能集合 |
dict |
键值对 | 配置、JSON、消息对象 |
10. 文件读写:读取资料和保存结果
AI 应用经常要读取本地资料,也要保存模型处理结果。
10.1 读取文件
with open("article.txt", "r", encoding="utf-8") as file:
content = file.read()
print(content)
with open(...) 的好处是代码块执行结束后会自动关闭文件。
逐行读取:
with open("questions.txt", "r", encoding="utf-8") as file:
for line in file:
question = line.strip()
if question:
print(f"准备处理:{question}")
10.2 写入文件
result = "这是 AI 分析后的结果。"
with open("result.txt", "w", encoding="utf-8") as file:
file.write(result)
w 表示写入模式,会覆盖原文件内容。
10.3 追加文件
log = "本次任务处理完成\n"
with open("app.log", "a", encoding="utf-8") as file:
file.write(log)
a 表示追加模式,不会清空原内容。
10.4 文件模式总结
| 模式 | 含义 |
|---|---|
r |
只读 |
w |
写入,覆盖原内容 |
a |
追加,在文件末尾写入 |
11. 异常处理:让程序更稳定
程序运行时可能出现各种错误,例如文件不存在、类型转换失败、接口请求失败。异常处理可以避免程序直接崩溃。
try:
with open("data.txt", "r", encoding="utf-8") as file:
content = file.read()
except FileNotFoundError:
print("文件不存在,请检查路径")
捕获多个异常:
try:
number = int("abc")
except ValueError as error:
print(f"转换失败:{error}")
except Exception as error:
print(f"未知错误:{error}")
else 和 finally:
try:
number = int("123")
except ValueError:
print("转换失败")
else:
print(f"转换成功:{number}")
finally:
print("处理结束")
在 AI 应用中,异常处理通常用于:
- 文件不存在时给出友好提示。
- 用户输入格式错误时重新提示。
- API 调用失败时记录日志。
- 某条数据处理失败时跳过,不影响后续任务。
12. 模块、包和第三方库
当代码越来越多时,不应该把所有内容都写在一个文件里。Python 可以通过模块和包组织代码。
12.1 模块
一个 .py 文件就是一个模块。
例如有一个 prompt_utils.py:
def build_prompt(role, question):
return f"你是一个{role},请回答:{question}"
在另一个文件中导入:
from prompt_utils import build_prompt
prompt = build_prompt("Python 老师", "什么是模块?")
print(prompt)
12.2 避免导入时自动执行测试代码
def add(a, b):
return a + b
if __name__ == "__main__":
print(add(1, 2))
if __name__ == "__main__": 下面的代码只会在直接运行当前文件时执行,被其他文件导入时不会执行。
12.3 包
包可以理解为包含多个模块的文件夹,通常会有一个 __init__.py 文件。
示例结构:
ai_app/
__init__.py
prompt_utils.py
file_utils.py
main.py
这样可以把 prompt 处理、文件处理、主程序逻辑分开维护。
12.4 pip 安装第三方库
Python 的很多能力来自第三方库。安装第三方库通常使用 pip:
pip install requests
如果下载慢,可以使用镜像源:
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
学习 AI 应用开发后,你可能会接触:
requests:发送 HTTP 请求。fastapi:开发后端接口。pydantic:做数据校验。pandas:处理表格数据。numpy:处理数值计算。
langchain,langgraph也有很多库,导入后才能让开发智能应用更便捷。
# langchain 本体
pip install langchain
# langgraph 图编排核心
pip install langgraph
# langchain 通用接口、提示词、输出解析
pip install langchain-core
# 各类模型统一封装(openai/通义千问/文心一言等)
pip install langchain-openai
13. 综合案例:批量文本分析助手
下面用一个小案例,把变量、字符串、列表、字典、函数、循环、文件读写、异常处理串起来。
这个案例不调用真实大模型,只是模拟“批量分析文本”的流程,重点理解 Python 代码结构。
13.1 准备分析函数
def analyze_text(text):
"""模拟 AI 文本分析。"""
clean_text = text.strip()
if not clean_text:
return {
"summary": "空文本",
"length": 0,
"has_ai": False,
}
return {
"summary": clean_text[:20],
"length": len(clean_text),
"has_ai": "AI" in clean_text or "人工智能" in clean_text,
}
13.2 批量处理文本
texts = [
"AI 应用开发需要掌握 Python 基础。",
"RAG 可以让模型结合外部知识回答问题。",
"",
"FastAPI 常用于开发后端接口。",
]
results = []
for text in texts:
result = analyze_text(text)
results.append(result)
for index, result in enumerate(results, start=1):
print(f"第 {index} 条:{result}")
输出示例:
第 1 条:{'summary': 'AI 应用开发需要掌握 Python', 'length': 22, 'has_ai': True}
第 2 条:{'summary': 'RAG 可以让模型结合外部知识回答', 'length': 22, 'has_ai': False}
第 3 条:{'summary': '空文本', 'length': 0, 'has_ai': False}
第 4 条:{'summary': 'FastAPI 常用于开发后端接口。', 'length': 19, 'has_ai': False}
13.3 保存分析结果
def save_results(results, output_file):
with open(output_file, "w", encoding="utf-8") as file:
for index, result in enumerate(results, start=1):
file.write(f"第 {index} 条\n")
file.write(f"摘要:{result['summary']}\n")
file.write(f"长度:{result['length']}\n")
file.write(f"是否包含 AI 关键词:{result['has_ai']}\n")
file.write("\n")
save_results(results, "analysis_result.txt")
13.4 加上异常处理
def read_texts(input_file):
try:
with open(input_file, "r", encoding="utf-8") as file:
return [line.strip() for line in file if line.strip()]
except FileNotFoundError:
print("输入文件不存在,返回空列表")
return []
texts = read_texts("texts.txt")
这个案例虽然简单,但已经包含了 AI 应用脚本常见的基础结构:
- 读取输入数据。
- 封装处理函数。
- 批量处理内容。
- 用字典保存结构化结果。
- 把结果写入文件。
- 用异常处理兜底。
真实项目中,只需要把 analyze_text() 里的模拟逻辑换成真实模型调用,就可以扩展成一个小型 AI 文本分析工具。
14. 总结
AI 智能应用开发,不需要一开始就把 Python 学到非常深,但本文这些基础语法一定要熟练:
- 变量和类型转换:保存和处理基础数据。
- 字符串:构造 prompt、处理模型输入输出。
- 判断和循环:控制流程、批量处理任务。
- 函数:封装可复用逻辑。
- 列表和字典:组织消息、配置和结构化结果。
- 文件读写:读取资料、保存分析结果。
- 异常处理:让程序在出错时更稳定。
- 模块和包:把脚本整理成项目。
更多推荐
所有评论(0)