【AI大模型应用开发工程师特训笔记】第04讲(第4章):运算符

目录

[4.1 算术运算符:对数字做数学运算](#4.1 算术运算符:对数字做数学运算)

[4.1.1 常用算术运算符一览](#4.1.1 常用算术运算符一览)

[4.1.2 AI 场景实例:计算 Token 消耗与参数调节](#4.1.2 AI 场景实例:计算 Token 消耗与参数调节)

[4.2 比较运算符:让 AI"判断"条件](#4.2 比较运算符:让 AI“判断”条件)

[4.2.1 常用比较运算符](#4.2.1 常用比较运算符)

[4.2.2 AI 场景实例:参数校验与比较](#4.2.2 AI 场景实例:参数校验与比较)

[4.3 赋值运算符:给变量"喂数据"](#4.3 赋值运算符:给变量“喂数据”)

[4.3.1 基本赋值与复合赋值](#4.3.1 基本赋值与复合赋值)

[4.3.2 AI 场景实例:累加 token 计数](#4.3.2 AI 场景实例:累加 token 计数)

[4.4 逻辑运算符:组合多个条件(像 AI 的多重判断)](#4.4 逻辑运算符:组合多个条件(像 AI 的多重判断))

[4.4.1 三个逻辑运算符](#4.4.1 三个逻辑运算符)

[4.4.2 真值表(一目了然)](#4.4.2 真值表(一目了然))

[4.4.3 AI 场景实例:安全调用 API 的前置条件](#4.4.3 AI 场景实例:安全调用 API 的前置条件)

[4.5 位运算符:底层的二进制操作(了解即可)](#4.5 位运算符:底层的二进制操作(了解即可))

[4.5.1 位运算符列表](#4.5.1 位运算符列表)

[4.5.2 简单示例(不必深究)](#4.5.2 简单示例(不必深究))

[4.6 成员运算符:检查元素是否在容器中](#4.6 成员运算符:检查元素是否在容器中)

[4.6.1 AI 场景实例:过滤敏感词、检测结束符](#4.6.1 AI 场景实例:过滤敏感词、检测结束符)

[4.7 身份运算符:比较对象身份(是否同一个)](#4.7 身份运算符:比较对象身份(是否同一个))

[4.7.1 何时使用?](#4.7.1 何时使用?)

[4.8 运算符优先级:谁先计算?](#4.8 运算符优先级:谁先计算?)

[4.8.1 优先级表(从高到低)](#4.8.1 优先级表(从高到低))

[4.8.2 AI 场景示例:验证参数合法性](#4.8.2 AI 场景示例:验证参数合法性)

[4.9 综合实战:AI 请求参数校验与决策](#4.9 综合实战:AI 请求参数校验与决策)

[4.10 本章小结](#4.10 本章小结)


运算符是编程语言中用来对数据进行计算、比较、组合的符号。学会了变量和数据类型后,运算符就是你让数据"动起来"的工具。

本章所有例子都围绕 AI 大模型 的实际场景------比如调节温度系数、对比模型性能、组合多个判断条件、处理 Token 计数等。学完后,你将能够写出更智能的条件判断与数据运算代码。

4.1 算术运算符:对数字做数学运算

算术运算符用于对数字(整数、浮点数)进行加、减、乘、除等操作。在 AI 开发中,你可能需要计算 Token 总数、调整参数值、平均延迟等。

4.1.1 常用算术运算符一览

运算符 含义 例子 结果
+ 加法 1000 + 350 1350
- 减法 4096 - 2048 2048
* 乘法 0.7 * 2 1.4
/ 除法(结果总是浮点数) 10 / 3 3.333...
// 整除(取整数部分) 10 // 3 3
% 取余(模运算) 10 % 3 1
** 幂运算 2 ** 10 1024

4.1.2 AI 场景实例:计算 Token 消耗与参数调节

python 复制代码
# 1. 计算总 Token 数
input_tokens = 1200
output_tokens = 348
total_tokens = input_tokens + output_tokens
print(f"本次请求共消耗 {total_tokens} 个 token")   # 1548

# 2. 温度系数放大与缩小
temperature = 0.85
higher_temp = temperature * 1.2   # 提高随机性
lower_temp = temperature / 1.5     # 降低随机性
print(f"原温度:{temperature},提高后:{higher_temp:.2f},降低后:{lower_temp:.2f}")

# 3. 整除与余数:将 token 分成批次处理(每批 512 个)
batch_size = 512
total_tokens = 1500
batches = total_tokens // batch_size       # 2 整批
remainder = total_tokens % batch_size       # 476 个剩余
print(f"需要 {batches} 个完整批次,剩余 {remainder} 个 token")

# 4. 幂运算:计算 2 的 n 次方(模型隐藏层维度常见值)
hidden_size = 2 ** 12   # 4096 维
print(f"隐藏层维度:{hidden_size}")

💡 注意 :除法 / 的结果总是浮点数,就算两个整数相除。5/2 得到 2.5 而不是 2。想要整数除法用 //

4.2 比较运算符:让 AI"判断"条件

比较运算符用于比较两个值的大小或是否相等,结果是一个布尔值(TrueFalse)。AI 中常用于判断是否超出 token 限制、对比模型版本、停止生成条件等。

4.2.1 常用比较运算符

运算符 含义 例子(结果为 True 的例子)
== 等于 "gpt-4" == "gpt-4"
!= 不等于 "gpt-4" != "claude-3"
> 大于 4096 > 2048
< 小于 0.1 < 0.9
>= 大于等于 100 >= 100
<= 小于等于 0.5 <= 1.0

4.2.2 AI 场景实例:参数校验与比较

python 复制代码
# 1. 检查 temperature 是否在合法范围
temperature = 1.2
is_valid = (0.0 <= temperature <= 2.0)   # Python 支持链式比较
print(f"温度{ temperature }是否合法?{is_valid}")

# 2. 比较两个模型的版本
model_a = "gpt-4-turbo"
model_b = "gpt-3.5-turbo"
is_same = (model_a == model_b)
print(f"模型相同?{is_same}")   # False

# 3. 检查生成的 token 是否超过最大限制
max_tokens_limit = 4096
output_tokens = 5000
is_exceed = output_tokens > max_tokens_limit
print(f"超出限制?{is_exceed}")   # True

if is_exceed:
    print("警告:输出 token 过多,请减少 max_tokens 或截断结果")

# 4. 比较两个浮点数(注意误差问题)
temperature_1 = 0.7
temperature_2 = 0.7
# 直接比较通常可以,但如果是计算出来的,推荐用误差范围
threshold = 1e-9
is_equal = abs(temperature_1 - temperature_2) < threshold
print(f"温度相等?{is_equal}")

⚠️ 陷阱 :浮点数比较不要直接用 ==,因为 0.1 + 0.2 == 0.3 可能是 False(浮点误差)。推荐使用 abs(a-b) < 1e-9

4.3 赋值运算符:给变量"喂数据"

赋值运算符用于将值赋给变量,最基础的 = 你已经见过。还有复合赋值运算符可以同时进行计算和赋值,写起来更简洁。

4.3.1 基本赋值与复合赋值

运算符 例子 等价写法
= x = 5 直接赋值
+= x += 3 x = x + 3
-= x -= 2 x = x - 2
*= x *= 4 x = x * 4
/= x /= 2 x = x / 2
//= x //= 3 x = x // 3
%= x %= 3 x = x % 3
**= x **= 2 x = x ** 2

4.3.2 AI 场景实例:累加 token 计数

python 复制代码
# 1. 统计多轮对话的 token 总数
total_tokens = 0

# 第一轮
prompt_tokens = 150
completion_tokens = 80
total_tokens += prompt_tokens + completion_tokens   # total_tokens = 0 + 230

# 第二轮
prompt_tokens = 200
completion_tokens = 110
total_tokens += (prompt_tokens + completion_tokens) # total_tokens = 230 + 310 = 540

print(f"总共消耗 token 数:{total_tokens}")

# 2. 动态调整温度系数
temperature = 0.8
temperature += 0.1    # 提高一点随机性
print(f"调整后温度:{temperature}")   # 0.9

temperature *= 0.9    # 稍微降低
print(f"再调整:{temperature}")        # 0.81

# 3. 批次处理中更新剩余 token
remaining_tokens = 1024
batch_size = 512
remaining_tokens -= batch_size   # 使用一批后剩余
print(f"剩余 token:{remaining_tokens}")   # 512

4.4 逻辑运算符:组合多个条件(像 AI 的多重判断)

逻辑运算符用于连接布尔表达式,得到最终的布尔结果。AI 场景中常用来综合判断:是否满足所有条件、是否至少满足一个条件、是否取反。

4.4.1 三个逻辑运算符

运算符 含义 规则
and 两边都为 True 结果才为 True
or 至少一边为 True 结果为 True
not 取反,TrueFalseFalseTrue

4.4.2 真值表(一目了然)

A B A and B A or B not A
True True True True False
True False False True False
False True False True True
False False False False True

4.4.3 AI 场景实例:安全调用 API 的前置条件

python 复制代码
# 1. 检查调用大模型 API 的所有条件
has_api_key = True
has_quota = False
is_network_ok = True

# 必须同时满足:有 key 并且有余额并且网络正常
can_call = has_api_key and has_quota and is_network_ok
print(f"可以调用 API?{can_call}")   # False(因为 has_quota 为 False)

# 2. 至少满足一个条件才使用缓存
cache_hit = False
online_result_valid = True
use_result = cache_hit or online_result_valid
print(f"可以使用缓存/在线结果?{use_result}")   # True

# 3. 取反:如果温度设置不合理,则发出警告
temperature = 2.5
is_invalid = not (0.0 <= temperature <= 2.0)   # 等价于 temperature < 0 or temperature > 2
if is_invalid:
    print(f"警告:温度 {temperature} 超出 [0,2] 范围")

# 4. 组合判断:满足条件则停止生成
stop_words = ["再见", "结束"]
response = "好的,再见"
should_stop = "再见" in stop_words or "结束" in stop_words   # in 是成员运算符,后文会讲
print(f"是否停止生成?{should_stop}")   # True

💡 短路求值and 如果左边为 False,右边不会执行;or 如果左边为 True,右边不会执行。利用这个特性可以写出更简洁的代码。

python 复制代码
# 简短的默认值设置
temperature = 0.0
safe_temp = temperature or 0.7   # 如果 temperature 为 0(假值),则取 0.7
print(safe_temp)                 # 输出 0.7(因为 0.0 被视为 False)

4.5 位运算符:底层的二进制操作(了解即可)

位运算符直接操作整数的二进制位。AI 开发中很少直接用,但在某些高性能场景(如模型量化、压缩)或编写底层库时会用到。零基础了解概念即可。

4.5.1 位运算符列表

运算符 含义 例子
& 按位与 5 & 3 = 1
` ` 按位或
^ 按位异或 5 ^ 3 = 6
~ 按位取反 ~5 = -6
<< 左移 5 << 1 = 10
>> 右移 5 >> 1 = 2

4.5.2 简单示例(不必深究)

python 复制代码
# 二进制:5 -> 0101, 3 -> 0011
print(5 & 3)   # 0001 -> 1
print(5 | 3)   # 0111 -> 7
print(5 ^ 3)   # 0110 -> 6

# 左移一位相当于乘以 2
tokens = 512
double_tokens = tokens << 1   # 1024

在 AI 中,位运算偶尔用于权限标记 (如模型支持的功能位标志)或字符处理。初学者知道有这些东西即可。

4.6 成员运算符:检查元素是否在容器中

成员运算符用于判断一个值是否存在于某个序列(如字符串、列表、元组等)中。AI 场景:检查某个词是否在黑名单中,判断输出是否包含结束标志等。

运算符 含义
in 在...里面,返回 True
not in 不在...里面,返回 True

4.6.1 AI 场景实例:过滤敏感词、检测结束符

python 复制代码
# 1. 检查用户输入是否包含敏感词
sensitive_words = ["暴力", "色情", "政治"]
user_input = "请解释一下暴力美学"
has_bad_word = any(word in user_input for word in sensitive_words)   # 简单写法:循环每个词判断

# 更易懂的写法:
has_bad_word = False
for word in sensitive_words:
    if word in user_input:
        has_bad_word = True
        break

if has_bad_word:
    print("输入包含敏感词,请修改")

# 2. 检查模型回复是否包含结束标记
response = "这是最终答案。[END]"
if "[END]" in response:
    print("检测到结束标记,停止流式输出")

# 3. 判断模型名称是否在可用模型列表中
available_models = ["gpt-4", "gpt-3.5", "claude-3"]
model_choice = "llama-2"
if model_choice not in available_models:
    print(f"错误:模型 {model_choice} 不在可用列表中")

💡 in 对于字符串是子串判断"cat" in "catalog" 返回 True。如果希望精确匹配单词,可以用空格分割后再判断。

4.7 身份运算符:比较对象身份(是否同一个)

身份运算符用于判断两个变量是否指向内存中的同一个对象 。与 == 不同,== 比较的是值是否相等,而 is 比较的是对象身份(可以理解为 id 是否相同)。

运算符 含义
is 是同一个对象
is not 不是同一个对象

4.7.1 何时使用?

在 AI 开发中,通常用 == 比较值就够了,但有时需要判断是否为 None 或是否同一个配置对象。

python 复制代码
# 判断变量是否为 None(推荐使用 is,而不是 ==)
api_response = None
if api_response is None:
    print("API 未返回任何结果")

# 两个变量指向同一个对象
config_a = {"temperature": 0.7}
config_b = config_a   # config_b 和 config_a 指向同一个字典
print(config_a is config_b)   # True

config_c = {"temperature": 0.7}   # 新字典,内容相同但不同对象
print(config_a is config_c)   # False
print(config_a == config_c)   # True(值相等)

⚠️ 注意 :对于小的整数和短字符串,Python 可能会做驻留优化,导致 is 也返回 True,但不要依赖这种行为。判断相等永远用 ==,判断是否为 Noneis

4.8 运算符优先级:谁先计算?

当表达式中有多个运算符时,Python 按照优先级决定计算顺序。你可以使用括号 () 强制改变顺序。

4.8.1 优先级表(从高到低)

优先级 运算符
1 () 括号
2 ** 幂运算
3 ~ 按位取反
4 *///% 乘除取余
5 +- 加减
6 <<>> 移位
7 & 按位与
8 ^ 按位异或
9 `
10 ==!=><>=<=isis notinnot in 比较/成员/身份
11 not 逻辑非
12 and 逻辑与
13 or 逻辑或

4.8.2 AI 场景示例:验证参数合法性

python 复制代码
# 错误写法:不加括号可能逻辑错误
temperature = 1.5
max_tokens = 3000
# 想要检查 temperature 范围且 max_tokens 不超过 4096
# 错误写法(比较运算符优先级高于 and)
# condition = 0 <= temperature <= 2 and max_tokens <= 4096   # 实际没问题,因为链式比较特殊
# 更好的做法是加括号
condition = (0 <= temperature <= 2) and (max_tokens <= 4096)
print(condition)   # True

# 混合算术和比较
total_tokens = 1200 + 350
limit = 2048
is_within = total_tokens <= limit   # 加法先计算,再比较
print(f"总 token {total_tokens} 是否在限制内?{is_within}")

# 使用括号改变优先级
result = 2 ** 3 * 4   # 先幂 (8) 再乘 = 32
result2 = 2 ** (3 * 4) # 先括号 (12) 再幂 = 4096
print(result, result2)

💡 建议 :当你不太确定优先级时,直接加括号 () 明确顺序,代码也更易读。

4.9 综合实战:AI 请求参数校验与决策

将本章所有运算符融合成一个脚本,模拟调用 AI 模型前的完整检查过程。

python 复制代码
# 模拟 AI 请求参数校验器

# 用户配置(实际可能来自 input 或配置文件)
model = "gpt-4"
temperature = 1.3
max_tokens = 5000
top_p = 0.6
user_prompt = "帮我写一首诗"
stop_word = "END"

# 系统常量
ALLOWED_MODELS = ["gpt-4", "gpt-3.5", "claude-3"]
MAX_TOKENS_LIMIT = 4096
TEMPERATURE_MIN = 0.0
TEMPERATURE_MAX = 2.0

# 1. 检查模型合法性
model_valid = model in ALLOWED_MODELS

# 2. 检查温度范围
temp_valid = (TEMPERATURE_MIN <= temperature <= TEMPERATURE_MAX)

# 3. 检查 max_tokens 范围
tokens_valid = (1 <= max_tokens <= MAX_TOKENS_LIMIT)

# 4. 检查 top_p 范围(一般是 0~1)
top_p_valid = (0.0 < top_p <= 1.0)

# 5. 检查 prompt 不为空且长度不超过 8000 字符
prompt_valid = (user_prompt != "") and (len(user_prompt) <= 8000)

# 6. 综合判断所有条件
all_valid = model_valid and temp_valid and tokens_valid and top_p_valid and prompt_valid

# 输出结果
print("=" * 50)
print("AI 请求参数校验结果")
print(f"模型:{model} -> {'✅' if model_valid else '❌'}")
print(f"温度:{temperature} -> {'✅' if temp_valid else '❌'}")
print(f"max_tokens:{max_tokens} -> {'✅' if tokens_valid else '❌'}")
print(f"top_p:{top_p} -> {'✅' if top_p_valid else '❌'}")
print(f"提示词长度:{len(user_prompt)} -> {'✅' if prompt_valid else '❌'}")
print(f"是否可以发起请求:{'✅ 是' if all_valid else '❌ 否'}")
print("=" * 50)

# 如果不合法,给出具体建议
if not all_valid:
    suggestions = []
    if not model_valid:
        suggestions.append(f"请选择模型:{', '.join(ALLOWED_MODELS)}")
    if not temp_valid:
        suggestions.append(f"温度范围为 {TEMPERATURE_MIN}~{TEMPERATURE_MAX}")
    if not tokens_valid:
        suggestions.append(f"max_tokens 范围为 1~{MAX_TOKENS_LIMIT}")
    if not top_p_valid:
        suggestions.append("top_p 应介于 0 和 1 之间(通常 0.1~0.95)")
    if not prompt_valid:
        suggestions.append("提示词不能为空且长度不超过 8000 字符")
    print("改进建议:")
    for s in suggestions:
        print(f"- {s}")

运行此脚本(修改部分无效值)可以看输出变化。

4.10 本章小结

运算符类别 常用运算符 AI 典型应用
算术 + - * / // % ** Token 统计、参数缩放、批次分割
比较 == != > < >= <= 校验温度范围、比较模型版本、限制长度
赋值 = += -= *= /= 累加 token 总数、动态调参
逻辑 and or not 多条件组合校验(API 调用前检查)
成员 in not in 敏感词过滤、可用模型判断
身份 is is not 判断是否为 None
位运算 `& ^ ~ << >>`
相关推荐
LCG元1 小时前
从零搭建手机可访问的本地私人AI聊天系统:基于Ollama + OpenWebUI
人工智能·智能手机
土星云SaturnCloud1 小时前
土星云AI边缘计算的算法应用-人脸检测
服务器·人工智能·ai·边缘计算
金智维科技官方1 小时前
财务智能体在财务领域的应用
人工智能·ai·自动化·财务·智能体
xixixi777771 小时前
Token 经济重构价值分配:中国移动成核心枢纽,算网安一体化按需计费普惠中小企业
人工智能·ai·大模型·云计算·算力·token·流量
凯丨1 小时前
让 AI 通宵优化神经网络:Karpathy autoresearch 的设计哲学与启示
人工智能·深度学习·神经网络
浦信仿真大讲堂1 小时前
【一文读懂系列】-达索仿真软件怎么选?
人工智能·仿真软件·达索仿真·达索软件
ZFSS1 小时前
Pika 视频生成 API 集成教程
java·数据库·人工智能·ai·音视频
jarvisuni1 小时前
魔改的DeepSeek桌面版成了!
人工智能·ai编程
问心无愧05131 小时前
ctf show web 入门258
android·前端·笔记