Day 3:打通 AI 经脉 —— 大模型 API 基础与测试

0 阅读5分钟

🚀 Day 3:打通 AI 经脉 —— 大模型 API 基础与测试

今日目标:获取阿里云通义千问(DashScope)的 API 凭证,在 Ubuntu 中编写一段包含防弹容错逻辑的极简 Python 代码,成功发起一次对话,并彻底拆解它的输入输出格式。

🔑 Step 1:获取大模型 API Key (拿到入场券)

API Key 就像是一张“VIP 通行证”,证明你有权限调用大模型的服务器,并用来计算你的消耗费用。

我们将使用阿里云百炼平台 (DashScope) 提供的兼容 OpenAI 格式的接口。这意味着,这套代码不仅能调通义千问,以后你想换成其他任何兼容标准协议的模型(如 ChatGPT、DeepSeek),连代码逻辑都不用改!

  1. 浏览器访问阿里云百炼控制台。
  2. 注册/登录并开通 DashScope 灵积模型服务。
  3. 在左侧导航栏找到 API-KEY 管理,创建一个新的 API Key。
  4. 复制并保存好你的专属密钥。

(基于我们本次的实战配置,参数如下:)

  • 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

  1. 在终端中输入以下命令创建并打开文件:
nano test_llm.py

  1. 将下面的代码复制并在终端里右键点击粘贴
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}")

  1. 保存并退出
  • 按键盘上的 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 里解析数据的命脉:

  1. 入参到底是什么?(messages 列表) 大模型没有记忆,每次交互都要把整个对话历史发给它:
  • "role": "system":这是开场白,用来设定大模型的人设(比如“安全专家”)。
  • "role": "user":代表人类当前的提问。
  1. 出参怎么取值?(提取 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)