本文档为 Llama 4 Scout-17B 模型 API 提供了全面的文档说明。
Llama 4 Scout-17B 模型通过 FastAPI 部署为一个 RESTful API 服务。该 API 在 2025 端口上运行,并提供使用 Llama 4 Scout-17B 语言模型进行文本生成的端点。相比之前的 Llama4 版本,Llama 4 Scout-17B 提供了更好的性能和功能。
- URL:
/ - 方法: GET
- 描述: 返回有关 API 服务的基本信息
- 响应示例:
{ "name": "Llama 4 Scout-17B API", "version": "1.0.0", "status": "active", "model": "meta-llama/Llama-4-Scout-17B-16E-Instruct" }
- URL:
/health - 方法: GET
- 描述: 检查模型和分词器是否已加载且服务是否健康
- 响应示例:
{ "status": "healthy" } - 错误响应 (503 Service Unavailable 服务不可用):
{ "detail": "Model or tokenizer not loaded" }
-
URL:
/generate -
方法: POST
-
描述: 根据提供的提示和参数生成文本
-
请求体:
{ "prompt": "用 Python 编写一个计算斐波那契数列的函数", "max_length": 512, "temperature": 0.7, "top_p": 0.9, "top_k": 50, "num_return_sequences": 1 } -
参数:
prompt(字符串, 必需): 用于生成的输入文本提示max_length(整数, 可选): 生成文本的最大长度,默认值: 512temperature(浮点数, 可选): 控制生成过程中的随机性,默认值: 0.7top_p(浮点数, 可选): 核心采样参数,默认值: 0.9top_k(整数, 可选): Top-k 采样参数,默认值: 50num_return_sequences(整数, 可选): 要生成的序列数量,默认值: 1
-
响应示例:
{ "generated_texts": [ "要用 Python 计算斐波那契数列,你可以使用递归方法或迭代方法。这是一个迭代函数的示例:\n\n```python\ndef fibonacci_iterative(n):\n if n <= 0:\n return []\n elif n == 1:\n return [0]\n else:\n list_fib = [0, 1]\n while len(list_fib) < n:\n next_fib = list_fib[-1] + list_fib[-2]\n list_fib.append(next_fib)\n return list_fib[:n] # 如果 n 较小,确保准确返回 n 个数字\n\n# 示例用法:\nnum_terms = 10\nprint(f\"斐波那契数列前 {num_terms} 项: {fibonacci_iterative(num_terms)}\")\n```\n\n此函数将返回一个包含前 `n` 个斐波那契数字的列表,从 0 开始。" ], "parameters": { "prompt": "用 Python 编写一个计算斐波那契数列的函数", "max_length": 512, "temperature": 0.7, "top_p": 0.9, "top_k": 50, "num_return_sequences": 1 } } -
错误响应 (500 Internal Server Error 服务器内部错误):
{ "detail": "Generation failed: [error message]" }
Llama 4 Scout-17B 相比之前的 Llama 版本提供了多项改进:
- 增强性能:更好的推理能力和更准确的响应
- 改进的上下文处理:更有效地利用上下文窗口
- 减少幻觉:更加事实准确和可靠的输出
- 更好的指令遵循:更精确地遵循用户指令
- 优化资源使用:更高效的内存利用和推理速度
代码仓库中包含一个 Python 脚本 (src/api_examples.py),演示了如何与 API 交互。以下是如何从 /home/ubuntu/ai-agent 目录使用它:
# 首先激活虚拟环境
source venv/bin/activate
# 使用默认参数进行基本使用
python src/api_examples.py
# 自定义提示
python src/api_examples.py --prompt "写一个递归函数来计算 Python 中的阶乘"
# 自定义生成参数
python src/api_examples.py --max-length 256 --temperature 0.8 --top-p 0.95 --num-sequences 2
# 自定义 API URL (如果不在本地运行)
python src/api_examples.py --url "http://your-server-address:2025"这是一个简单的 Python 示例,展示了如何从您自己的代码中调用 API:
import requests
def generate_text_from_llama4(prompt, max_length=512, temperature=0.7):
"""使用 Llama 4 Scout-17B API 生成文本"""
api_url = "http://localhost:2025/generate"
payload = {
"prompt": prompt,
"max_length": max_length,
"temperature": temperature
}
response = requests.post(api_url, json=payload)
if response.status_code == 200:
return response.json()["generated_texts"][0]
else:
raise Exception(f"API 请求失败: {response.text}")
# 示例用法
result = generate_text_from_llama4("编写一个 Python 函数以升序对数字列表进行排序。")
print(result)Llama 4 Scout-17B 支持结构化格式的对话完成。以下是使用方法:
import requests
import json
def chat_with_llama4(messages, temperature=0.7):
"""使用 Llama 4 Scout-17B API 生成对话完成"""
api_url = "http://localhost:2025/generate"
# 将消息格式化为对话提示
formatted_prompt = ""
for msg in messages:
role = msg["role"]
content = msg["content"]
if role == "system":
formatted_prompt += f"<|im_start|>system\n{content}<|im_end|>\n"
elif role == "user":
formatted_prompt += f"<|im_start|>user\n{content}<|im_end|>\n"
elif role == "assistant":
formatted_prompt += f"<|im_start|>assistant\n{content}<|im_end|>\n"
# 添加最终的助手提示
formatted_prompt += "<|im_start|>assistant\n"
payload = {
"prompt": formatted_prompt,
"temperature": temperature,
"max_length": 1024
}
response = requests.post(api_url, json=payload)
if response.status_code == 200:
return response.json()["generated_texts"][0]
else:
raise Exception(f"API 请求失败: {response.text}")
# 示例用法
messages = [
{"role": "system", "content": "你是一个有帮助的AI助手。"},
{"role": "user", "content": "Python的主要特点是什么?"}
]
response = chat_with_llama4(messages)
print(response)API 为各种场景提供了适当的错误处理:
- 如果模型或分词器加载失败,API 将返回 503 Service Unavailable 错误。
- 如果文本生成失败,API 将返回 500 Internal Server Error 并提供详细信息。
- 如果请求格式错误,API 将返回 422 Unprocessable Entity 错误并提供验证详细信息。
- 第一次请求可能需要更长时间,因为模型需要加载到内存中 (尤其是加载到 GPU)。
- 生成时间取决于请求的
max_length参数和提示的复杂性。 - 与仅 CPU 推理相比,使用具有足够显存 (推荐 Llama 4 Scout-17B >=8GB) 的 CUDA 兼容 GPU 可显著提高性能。
- 对于生产用途,请考虑部署在具有足够 RAM (>=16GB) 和合适 GPU 的机器上。
- Llama 4 Scout-17B 在性能和资源需求之间提供了良好的平衡,使其适合在资源有限的环境中部署。
要优化 Llama 4 Scout-17B 的资源使用:
- 量化:考虑使用 4 位或 8 位量化以减少内存占用
- 批处理:尽可能批量处理多个请求
- 上下文长度:将上下文长度限制在您的用例所需的范围内
- CPU 部署:对于没有 GPU 的环境,使用
device_map="auto"或cpu_only=True参数 - 缓存:为常见查询实现响应缓存