🚀 Day 3:打通 AI 经脉 —— 大模型 API 基础与测试
今日目标:获取阿里云通义千问(DashScope)的 API 凭证,在 Ubuntu 中编写一段包含防弹容错逻辑的极简 Python 代码,成功发起一次对话,并彻底拆解它的输入输出格式。
🔑 Step 1:获取大模型 API Key (拿到入场券)
API Key 就像是一张“VIP 通行证”,证明你有权限调用大模型的服务器,并用来计算你的消耗费用。
我们将使用阿里云百炼平台 (DashScope) 提供的兼容 OpenAI 格式的接口。这意味着,这套代码不仅能调通义千问,以后你想换成其他任何兼容标准协议的模型(如 ChatGPT、DeepSeek),连代码逻辑都不用改!
- 浏览器访问阿里云百炼控制台。
- 注册/登录并开通 DashScope 灵积模型服务。
- 在左侧导航栏找到 API-KEY 管理,创建一个新的 API Key。
- 复制并保存好你的专属密钥。
(基于我们本次的实战配置,参数如下:)
- API URL:
https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions - Model:
qwen3.5-plus - API Key:
sk-11f7c70b72bf4a3e81a6956d7917****
🛠️ Step 2:准备 Ubuntu 的 Python 测试环境 (智能按需安装)
打开我们配置好的 Ubuntu WSL 终端。我们需要用到一个专门用来发送网络请求的 Python 快递员库——requests。为了让环境配置脚本更加智能、专业,我们将采用**“先检测,后安装”**的策略。
请在终端中直接复制并粘贴执行以下整段 Bash 代码:
# 检测 Python 环境中是否已经安装了 requests 模块
if ! python3 -c "import requests" &> /dev/null; then
echo "⏳ 检测到环境缺少 requests 库,正在自动请求 apt 安装..."
sudo apt update
sudo apt install python3-requests -y
echo "✅ requests 库安装完毕!"
else
echo "✅ requests 库已就绪,环境状态完美,跳过安装步骤。"
fi
执行后,如果系统提示“已就绪”,说明环境完美,直接进入下一步!
💻 Step 3:编写你的第一个 AI 对话脚本
现在,我们要写一段 Python 代码,让程序去跟通义千问打个招呼。为了对初学者绝对友好,我们使用最简单的文本编辑器 nano。
- 在终端中输入以下命令创建并打开文件:
nano test_llm.py
- 将下面的代码复制并在终端里右键点击粘贴:
import requests
import json
import sys
# ==========================================
# 1. 配置阿里云通义千问的基础信息
# ==========================================
BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions"
MODEL_NAME = "qwen3.5-plus"
API_KEY = "sk-11f7c70b72bf4a3e81a6956d7917****"
# ==========================================
# 2. 准备提问内容 (messages 入参结构)
# ==========================================
messages = [
{"role": "system", "content": "你是一个资深的网络安全专家,说话极其简短。"},
{"role": "user", "content": "用一句话解释什么是 SQL 注入攻击?"}
]
# ==========================================
# 3. 组装网络请求并发送
# ==========================================
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
"model": MODEL_NAME,
"messages": messages,
"temperature": 0.1 # 数值越低,AI 回答越严谨
}
print("🚀 正在向阿里云通义千问发送请求,请稍候...\n")
try:
# 发送 POST 请求,超时时间设为 60 秒
response = requests.post(BASE_URL, json=payload, headers=headers, timeout=60)
res_json = response.json()
# 打印原始的完整返回结果 (让你看看它的真面目)
print("=== 📦 大模型返回的完整 JSON 数据 ===")
print(json.dumps(res_json, indent=4, ensure_ascii=False))
print("\n" + "="*40 + "\n")
# 防弹衣逻辑:如果大模型报错没有返回 choices 字段,提前拦截
if "choices" not in res_json:
print(f"❌ API 调用失败,错误详情:\n{res_json}")
sys.exit(1)
# 提取我们真正关心的回答内容和消耗的 Token
reply_content = res_json["choices"][0]["message"]["content"]
total_tokens = res_json["usage"]["total_tokens"]
print(f"🤖 AI 的回答:\n{reply_content}\n")
print(f"💰 本次对话总计消耗 Token: {total_tokens}")
except Exception as e:
print(f"❌ 请求发生代码级异常:{e}")
- 保存并退出:
- 按键盘上的
Ctrl + O(字母O),然后直接按Enter(回车) 确认保存。 - 按键盘上的
Ctrl + X退出编辑器,回到正常的命令行状态。
✅ Step 4:运行脚本与“解剖”大模型数据
见证奇迹的时刻!在终端里运行你的脚本:
python3 test_llm.py
如果一切顺利,你会在屏幕上看到类似这样的输出:
=== 📦 大模型返回的完整 JSON 数据 ===
{
"id": "chatcmpl-72b1...",
"object": "chat.completion",
"created": 1715000000,
"model": "qwen3.5-plus",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "SQL注入攻击是攻击者通过在输入字段中插入恶意SQL代码,欺骗数据库执行非授权操作的安全漏洞。"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 30,
"completion_tokens": 25,
"total_tokens": 55
}
}
========================================
🤖 AI 的回答:
SQL注入攻击是攻击者通过在输入字段中插入恶意SQL代码,欺骗数据库执行非授权操作的安全漏洞。
💰 本次对话总计消耗 Token: 55
🧠 核心知识点总结 (排错必看!)
初学者一定要盯着上面那段 JSON 看懂以下两点,这就是未来我们在 Splunk 里解析数据的命脉:
- 入参到底是什么?(
messages列表) 大模型没有记忆,每次交互都要把整个对话历史发给它:
"role": "system":这是开场白,用来设定大模型的人设(比如“安全专家”)。"role": "user":代表人类当前的提问。
- 出参怎么取值?(提取 JSON 数据) 我们要用像剥洋葱一样的方式写代码把它剥出来:
- 取回答文字:必须一层层剥开字典 ->
res_json["choices"][0]["message"]["content"]。 - 为什么要写“防弹衣”? 当 API 欠费、网络超时或模型名字写错时,大模型返回的 JSON 里根本没有
choices这个数组。强行去取就会导致 Python 崩溃报错 (list index out of range)。代码中的if "choices" not in res_json判断,提前化解了这个致命危机! - 取成本账单:同样剥开字典 ->
res_json["usage"]["total_tokens"]。
🎉 恭喜你!Day 3 经脉彻底打通! 你已经完全掌握了用 Python 调用大模型并提取关键数据的核心原理。接下来,我们就要正式回师 Splunk,继续进入 Day 4:安全第一 —— 配置插件全局凭证 (Setup Parameters)