Api调用大模型(实用)

Api调用大模型(实用)

API接口调用大模型

在大模型 API 调用中,除了框架封装,直接使用官方库能更直观地理解调用逻辑。本文将完全基于openai官方库,带你从初始化到实战,掌握大模型 API 调用的核心方法。

获取API密钥,去对应官网注册获取。比如硅基流动

在模型广场可以去看免费的:首页 · 魔搭社区

一、准备工作:环境与依赖

直接使用openai库调用 API,需先完成基础配置:

  1. 安装官方库:使用最新版本的库(v1 + 版本),支持所有主流大模型 API 格式(包括兼容 OpenAI 接口的平台如 SiliconFlow):

    bash 复制代码
    pip install openai
  2. 获取 API 密钥:在目标平台(如你使用的 SiliconFlow)注册账号,创建 API 密钥并妥善保存(后续用于身份验证)。

二、核心步骤:用 OpenAI 库初始化与调用大模型

以你提供的模型配置为例,我们从初始化开始,逐步实现完整调用流程。

步骤 1:初始化客户端

openai库通过OpenAI类创建客户端实例,需指定 API 密钥、接口地址和默认模型(可选)。对应你提供的配置,代码如下:

python 复制代码
import openai
import os

# 初始化客户端(推荐通过环境变量管理密钥,避免硬编码)
client = openai.OpenAI(
    api_key=os.getenv("OPENAI_API_KEY") or "*********************************",  # API密钥
    base_url="https://api.siliconflow.cn/v1",  # 接口基础地址(SiliconFlow平台)
)

# 定义要调用的模型(你选择的Qwen2.5-7B-Instruct)
MODEL = "Qwen/Qwen2.5-7B-Instruct"
  • api_key :平台验证密钥,实际开发中强烈建议通过环境变量(如os.getenv("OPENAI_API_KEY"))传入,避免代码泄露;
  • base_url:指定 API 接口地址。由于 SiliconFlow 兼容 OpenAI API 格式,因此通过该参数可直接对接其服务;
  • MODEL:显式定义模型名称,后续调用时直接引用,方便切换不同模型(如后续测试其他模型只需修改此处)。
步骤 2:基础调用:发送消息并获取响应

大模型 API 的核心是通过 "消息列表" 传递对话内容,消息需包含角色system/user/assistant)和内容content)。使用client.chat.completions.create方法调用模型:

python 复制代码
# 构建对话消息(遵循OpenAI API消息格式)
messages = [
    {"role": "system", "content": "你是一个专业的技术助手,用简洁的语言解释技术问题。"},  # 系统提示:定义模型角色
    {"role": "user", "content": "请说明大模型API调用的基本流程。"}  # 用户提问
]

# 调用模型(同步获取完整响应)
response = client.chat.completions.create(
    model=MODEL,  # 指定模型
    messages=messages,  # 对话消息列表
    temperature=0.7  # 控制回答随机性(0-1,值越低越稳定)
)

# 提取回答内容
answer = response.choices[0].message.content
print("模型回答:\n", answer)
  • 消息结构system消息用于设定模型行为(如 "专业技术助手"),user消息是用户输入,assistant消息可用于多轮对话中传递历史回答;
  • temperature参数:调节回答的创造性,0 表示确定性回答,1 表示更灵活发散的回答;
  • 响应解析response.choices[0].message.content是模型返回的核心回答文本。
步骤 3:多轮对话:保留上下文

实现多轮对话需在消息列表中追加历史对话记录,让模型感知上下文:

python 复制代码
import openai
import os

# 初始化客户端(推荐通过环境变量管理密钥,避免硬编码)
client = openai.OpenAI(
    api_key=os.getenv("OPENAI_API_KEY") or "*********************************",  # API密钥
    base_url="https://api.siliconflow.cn/v1",  # 接口基础地址(SiliconFlow平台)
)
# 定义要调用的模型(你选择的Qwen2.5-7B-Instruct)
MODEL = "Qwen/Qwen2.5-7B-Instruct"

# 初始化消息列表(包含系统提示)
messages = [
    {"role": "system", "content": "你是一个记忆型助手,记得历史对话内容。"}
]

# 模拟多轮对话
while True:
    # 获取用户输入
    user_input = input("请提问(输入q退出):")
    if user_input.lower() == "q":
        break

    # 追加用户消息到列表
    messages.append({"role": "user", "content": user_input})

    # 调用模型
    response = client.chat.completions.create(
        model=MODEL,
        messages=messages
    )

    # 提取回答并追加到消息列表(用于下一轮上下文)
    assistant_answer = response.choices[0].message.content
    messages.append({"role": "assistant", "content": assistant_answer})

    # 输出回答
    print(f"回答:{assistant_answer}\n")

通过保留messages列表中的所有历史消息(用户和助手的对话),模型能理解上下文,实现连贯的多轮交互。

步骤 4:流式调用:实时展示回答过程

如果需要像聊天软件一样实时输出回答(如 "打字效果"),可使用流式调用,通过stream=True参数实现:

python 复制代码
import openai
import os

# 初始化客户端(推荐通过环境变量管理密钥,避免硬编码)
client = openai.OpenAI(
    api_key=os.getenv("OPENAI_API_KEY") or "*********************************",  # API密钥
    base_url="https://api.siliconflow.cn/v1",  # 接口基础地址(SiliconFlow平台)
)
# 定义要调用的模型(你选择的Qwen2.5-7B-Instruct)
MODEL = "Qwen/Qwen2.5-7B-Instruct"


# 构建消息
messages = [
    {"role": "system", "content": "你是一个聊天助手,回答简洁友好。"},
    {"role": "user", "content": "请介绍一下流式调用的作用。"}
]

# 流式调用模型
print("模型回答:", end="")
stream = client.chat.completions.create(
    model=MODEL,
    messages=messages,
    stream=True  # 开启流式返回
)

# 逐段输出流式结果
for chunk in stream:
    # 过滤空内容(避免输出空字符)
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

流式调用会将回答按片段(chunk)返回,每收到一个片段就即时输出,适合需要实时反馈的场景(如网页聊天、APP 交互)。

三、多个参数值以及含义

1. temperature:控制回答的随机性(最常用)
  • 作用:调节模型输出的创造性 / 确定性,值越高,回答越发散;值越低,回答越稳定。

  • 取值范围:0~2(默认 1.0)

  • 极端情况:

    • temperature=0:输出几乎固定(相同输入大概率得到相同结果);
    • temperature=2:输出高度随机(可能出现逻辑跳跃)。
    python 复制代码
    # 示例:不同temperature对比
    response_stable = client.chat.completions.create(
        model=MODEL,
        messages=[{"role": "user", "content": "什么是人工智能?"}],
        temperature=0.1  # 低随机性:回答更标准、稳定
    )
    
    response_creative = client.chat.completions.create(
        model=MODEL,
        messages=[{"role": "user", "content": "什么是人工智能?"}],
        temperature=1.5  # 高随机性:回答更灵活、多样
    )
    2. top_p:控制回答的多样性(与 temperature 二选一)
    • 作用:通过 "累积概率" 筛选候选词,值越小,模型选择的范围越窄(更集中)。
    • 取值范围:0~1(默认 1.0)
    • 特点 :与temperature都是控制多样性,但逻辑不同。通常建议固定一个参数调整(如用temperature就不调top_p)。
    python 复制代码
    # 示例:限制回答多样性(聚焦高概率词汇)
    response = client.chat.completions.create(
        model=MODEL,
        messages=[{"role": "user", "content": "推荐一部科幻电影"}],
        top_p=0.3  # 仅从概率前30%的候选词中选择,回答更集中
    )
    3. max_tokens:限制回答的最大长度
    • 作用:控制模型生成的 token 数量上限(1 个汉字≈1 个 token,1 个英文单词≈1-2 个 token)。
    • 注意:若输入消息 + 生成回答的总 token 超过模型上限(如 Qwen2.5-7B 通常支持 8k~32k),会触发错误。
    python 复制代码
    # 示例:限制回答不超过100个token(约50-80字)
    response = client.chat.completions.create(
        model=MODEL,
        messages=[{"role": "user", "content": "详细介绍一下大模型"}],
        max_tokens=100  # 强制截断过长回答
    )
    4. stop:设置回答的停止符
    • 作用:当模型生成指定字符 / 字符串时,立即停止输出。
    • 适用场景:固定格式输出(如生成 JSON 后自动停止)、避免冗余内容。
    python 复制代码
    # 示例:遇到"总结完毕"时停止回答
    response = client.chat.completions.create(
        model=MODEL,
        messages=[{"role": "user", "content": "总结Python的特点"}],
        stop=["总结完毕"]  # 生成到该短语时停止
    )

看到这里,我想你已经具备了通过Api调用大模型的能力了。

相关推荐
大志说编程1 天前
LangChain框架入门17: 手把手教你创建LLM工具
python·langchain·ai编程
王国强20091 天前
LangChain 设计原理分析¹⁵ | AI 编排平台的演化方向
langchain
掘我的金2 天前
20_LangChain多数据源生成
langchain
掘我的金2 天前
19_LangChain结合SQL实现数据分析问答
langchain
王国强20092 天前
LangChain 设计原理分析¹⁴ | 模拟实现一个精简版 LangChain
langchain
王国强20092 天前
LangChain 设计原理分析¹³ | LangChain Serve 快速部署
langchain
前端双越老师2 天前
【干货】使用 langChian.js 实现掘金“智能总结” 考虑大文档和 token 限制
人工智能·langchain·node.js
Dajiaonew2 天前
Spring AI RAG 检索增强 应用
java·人工智能·spring·ai·langchain
xuanwuziyou3 天前
LangChain 多任务应用开发
人工智能·langchain