小白搭建大模型应用与智能体(2)—— 大模型应用之API集成
本章介绍了如何将本地化大模型作为API服务进行集成,具体包括使用Flask框架创建API服务、部署Ollama模型并进行推理,另外还介绍了内网穿透工具的使用,方便将本地服务暴露给外部访问。同时,本文也展示了如何在代码层直接调用大模型API(如OpenAI和Hugging Face)进行推理。通过API集成,大模型的应用可以更加灵活地与其他系统进行互动,为开发者提供更丰富的应用场景。
小白搭建大模型应用与智能体(2)—— 大模型应用之API集成
文章目录
前言
本系列内容将对笔者学到的大模型部署、应用与智能体做一个全方位的总结,旨在从较低的技术门槛层面,帮助需要搭建大模型应用的企业或者个人,了解大模型应用搭建的整个流程,并可以根据本篇文章的整体思路,拓展学习其中的其他知识。
在上一章节《小白搭建搭建大模型应用与智能体(1)—— 了解大模型私有化部署》中,我们详细介绍了大模型的本地化部署。完成大模型部署后,基本的模型推理工作已经能够在本地终端完成。从应用设计的角度,大模型应用可以通过多种形式进行集成和部署,每种形式都侧重于不同的目标和实现方式。以下是一些主要的应用形式:
- API 集成
- 检索增强生成(RAG, Retrieval-Augmented Generation)
- 智能体(Agent)
- 大模型应用开发平台
本文将重点探讨如何将大模型作为API提供服务,集成到其他应用中。
有一个容易混淆的点是,我们普遍熟知的大模型如GPT、DeepSeek、LLaMA等,其实是大模型的很小一个分支,即语言大模型(Large Language Model, LLM) 。根据数据模态分类,大模型还包含视觉大模型(Computer Vision Models, CV)、语音大模型(Automatic Speech Recognition Models, ASR)以及多模态大模型(Multimodel Models)。笔者在文章中提到的“大模型”均指代语言大模型。
一、私有化部署的API集成
这里举一个最简单的以 Ollama 模型作为 API 提供服务的例子。为了将 Ollama 模型作为 API 提供服务,需要一个后端 Web 服务,通常使用 Flask 或 FastAPI 来暴露 HTTP 接口。以下是一个简单的使用 Flask 创建 API 的示例。
1. 部署 Ollama 模型
首先,确保你已经成功在本地部署了模型。假设你已经下载并配置了模型文件。一般来说,Ollama 提供的模型可以通过如下命令加载并启动:
ollama run <model_name>
例如,如果你有一个名为 qwen 的模型,命令可能类似于:
ollama run qwen
这样,Ollama 会启动模型,并将其加载到本地环境中。
2. 创建一个 Python Web 服务
为了将 Ollama 模型作为 API 提供服务,你需要一个后端 Web 服务,通常使用 Flask 或 FastAPI 来暴露 HTTP 接口。以下是一个简单的使用 Flask 创建 API 的示例。
a. 安装 Flask
如果尚未安装 Flask,请先安装它:
pip install flask
b. 编写 API 服务代码
创建一个 app.py 文件,内容如下:
from flask import Flask, request, jsonify
import subprocess
import json
app = Flask(__name__)
# 定义一个函数调用 Ollama 模型
def run_ollama_model(input_text):
# 使用 subprocess 调用 Ollama 模型进行推理
result = subprocess.run(
['ollama', 'run', 'qwen', '--input', input_text],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
# 捕获模型的输出
return result.stdout.decode('utf-8')
# 定义一个 POST 路由来处理 API 请求
@app.route('/predict', methods=['POST'])
def predict():
# 获取请求数据
data = request.get_json()
input_text = data.get("input_text", "")
if not input_text:
return jsonify({"error": "No input text provided"}), 400
# 调用模型进行推理
try:
output = run_ollama_model(input_text)
return jsonify({"output": output}), 200
except Exception as e:
return jsonify({"error": str(e)}), 500
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0", port=5000)
3. 启动 Flask API 服务
运行 app.py 启动 Flask API 服务:
python app.py
这会启动一个本地 API 服务,默认运行在 http://127.0.0.1:5000 。现在,你可以通过 POST 请求访问 /predict 路由,并传递 input_text 来获取模型的输出。
4. 调用 API
你可以使用任何 HTTP 客户端(例如 curl 或 Postman)来向该 API 发送请求。以下是使用 curl 的示例:
curl -X POST http://127.0.0.1:5000/predict -H "Content-Type: application/json" -d '{"input_text": "What is AI?"}'
5. 内网穿透工具
在云端服务的大模型应用搭建过程中,如果我们需要让云端服务的应用访问到我们本地的大模型 API ,则需要做到内网穿透,即直接让外网访问到内网。参考链接:最好用的内网穿透工具合集。这里以笔者使用过的 ngrok 为例。
a. 进入ngrok 官网注册账号,并下载 ngrok。
b. 在目标机器上,填写授权码(登陆账号后就会看到),运行 ngrok。
./ngrok authtoken 授权码
c. 将 HTTP 隧道转发到本地端口 80,通过外网域名即可访问到本地 80 端口。
(根据你想要开放的端口调整参数,如上文开放的是 5000 端口就把参数改成5000)
./ngrok http 80
6. 本地模型调用
在代码中,本地的大模型 API 调用可以用以下 Python 代码实现:
import requests
# 设置本地API服务的URL
url = "http://localhost:5000/v1/predict"
# 设置请求体
data = {
"input": "Hello, how are you today?" # 输入文本
}
# 发起POST请求调用本地服务
response = requests.post(url, json=data)
# 打印返回的结果
if response.status_code == 200:
print(response.json()['output'])
else:
print(f"Error: {response.status_code}")
二、在代码层直接调用大模型 (Python)
在代码层直接调用大模型通常是通过 API 接口进行调用。这种形式适用于直接集成模型推理功能到应用程序中,无需手动管理模型文件或推理过程,而是通过API访问远程服务或本地服务。
1. OpenAI API 调用大模型推理
获取API:OpenAI Platform
首先,确保本地安装了 openai Python 库,可以使用以下命令进行安装:
pip install openai
代码示例:
import openai
# 设置API密钥
openai.api_key = "your-api-key"
# 调用OpenAI API进行模型推理
response = openai.Completion.create(
engine="text-davinci-003", # 选择模型
prompt="Hello, how are you today?", # 输入提示词
max_tokens=50 # 设置返回的最大token数
)
# 打印返回的结果
print(response.choices[0].text.strip())
2. 使用 Hugging Face 模型进行推理
获取模型:Hugging Face 官网
国内获取模型:Hugging Face 国内镜像网
要使用 Hugging Face 的 API 来调用预训练的大模型,可以使用 transformers 库。在 Python 中,调用 Hugging Face 提供的模型主要通过以下步骤:
首先,安装 Hugging Face 的 transformers 库和 torch (或者其他推理框架,如 TensorFlow):
pip install transformers torch
然后使用 Hugging Face 提供的 GPT-2 模型进行文本生成(可以在Hugging Face库里找到任何需要的模型进行替换):
from transformers import pipeline
# 加载预训练的GPT-2模型和tokenizer
generator = pipeline('text-generation', model='gpt2')
# 输入提示词
prompt = "Once upon a time,"
# 调用模型进行文本生成
result = generator(prompt, max_length=50, num_return_sequences=1)
# 打印生成的文本
print(result[0]['generated_text'])
如果使用的是API则通过以下代码实现:
import requests
# 设置 Hugging Face API Key(需要在 Hugging Face 账户中生成)
api_key = "your_huggingface_api_key"
# 设置请求头
headers = {
"Authorization": f"Bearer {api_key}"
}
# 设置请求数据
data = {
"inputs": "Once upon a time,"
}
# 调用 Hugging Face API,进行文本生成
response = requests.post("https://api-inference.huggingface.co/models/gpt2", headers=headers, json=data)
# 打印返回的结果
if response.status_code == 200:
print(response.json()[0]['generated_text'])
else:
print(f"Error: {response.status_code}")
总结
本章介绍了如何将本地化大模型作为API服务进行集成,具体包括使用Flask框架创建API服务、部署Ollama模型并进行推理,另外还介绍了内网穿透工具的使用,方便将本地服务暴露给外部访问。同时,本文也展示了如何在代码层直接调用大模型API(如OpenAI和Hugging Face)进行推理。通过API集成,大模型的应用可以更加灵活地与其他系统进行互动,为开发者提供更丰富的应用场景。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)