✨道路是曲折的,前途是光明的!
📝 专注C/C++、Linux编程与人工智能领域,分享学习笔记!
🌟 感谢各位小伙伴的长期陪伴与支持,欢迎文末添加好友一起交流!
目录
引言:多模型 API 调用——构建灵活 AI 应用的核心能力
当前大语言模型(LLM)生态已形成多元化格局:OpenAI 的 GPT 系列凭借成熟的 API 生态占据商用领域主导地位,Anthropic 的 Claude 以长上下文和安全对齐见长,Meta 的 LLaMA 3 则凭借开源特性成为本地私有化部署的首选。
!在这里插入图片描述 ✨道路是曲折的,前途是光明的! 📝 专注C/C++、Linux编程与人工智能领域,分享学习笔记! 🌟 感谢各位小伙伴的长期陪伴与支持,欢迎文末添加好友一起交流! !在这里插入图片描述 目录 引言:多模型 API 调用——构建灵活 AI 应用的核心能力 一、各平台调用详解 1\. OpenAI API(GPT-4o/GPT-4 Turbo) 核心特点 前置准备 2\. Cl…

✨道路是曲折的,前途是光明的!
📝 专注C/C++、Linux编程与人工智能领域,分享学习笔记!
🌟 感谢各位小伙伴的长期陪伴与支持,欢迎文末添加好友一起交流!
当前大语言模型(LLM)生态已形成多元化格局:OpenAI 的 GPT 系列凭借成熟的 API 生态占据商用领域主导地位,Anthropic 的 Claude 以长上下文和安全对齐见长,Meta 的 LLaMA 3 则凭借开源特性成为本地私有化部署的首选。
在实际开发中,单一模型往往无法满足所有场景需求——GPT-4o 擅长多模态交互,Claude 适合超长文档处理,LLaMA 3 则能规避商用 API 的成本和隐私风险。掌握多平台 API/本地接口的调用能力,不仅能让开发者根据场景灵活切换模型,还能通过统一抽象层构建'模型无关'的 AI 应用,大幅提升系统的灵活性、成本可控性和容错能力。
本文将系统讲解 OpenAI、Claude、LLaMA 3 的接入方式、核心差异及最佳实践,帮助开发者高效、安全地集成多模型能力。

model(模型名称)、messages(对话历史)、temperature(随机性)等;pip install openai(推荐使用 v1.x 版本);model(如 claude-3-5-sonnet-20240620)、max_tokens(生成长度)、messages(对话列表);content 字段的 JSON,支持流式和非流式返回。pip install anthropic;ollama pull llama3:8b;pip install transformers torch accelerate,下载 LLaMA 3 权重(需通过 Meta 申请授权)。import os from openai import OpenAI from openai.error import RateLimitError, AuthenticationError, APIError # 初始化客户端(推荐 v1.x 版本方式)# 方式1:通过环境变量设置 API Key(推荐,避免硬编码) os.environ["OPENAI_API_KEY"]="your-openai-api-key" client = OpenAI()# 方式2:直接传入 API Key(不推荐,存在安全风险)# client = OpenAI(api_key="your-openai-api-key")defcall_openai(prompt:str, model:str="gpt-4o-mini")->str:""" 调用 OpenAI API 生成文本 :param prompt: 用户输入提示词 :param model: 模型名称,如 gpt-4o、gpt-4o-mini、gpt-3.5-turbo :return: 生成的文本内容 """try:# 构建请求 response = client.chat.completions.create( model=model, messages=[{"role":"system","content":"你是一个专业的技术助手,回答简洁准确。"},{"role":"user","content": prompt}], temperature=0.7,# 随机性,0-2 之间,值越高越随机 max_tokens=1024,# 最大生成 token 数 timeout=30# 请求超时时间)# 提取生成结果 result = response.choices[0].message.content.strip()# 打印 token 消耗(用于成本核算)print(f"Token 消耗:输入 {response.usage.prompt_tokens} | 输出 {response.usage.completion_tokens}")return result except AuthenticationError:print("错误:API Key 认证失败,请检查密钥是否正确")return""except RateLimitError:print("错误:API 调用速率超限,请等待或升级额度")return""except APIError as e:print(f"错误:OpenAI API 调用失败 - {e}")return""except Exception as e:print(f"未知错误:{e}")return""# 调用示例if __name__ =="__main__": prompt ="解释一下大模型的 token 计费机制" result = call_openai(prompt)print("OpenAI 响应结果:\n", result)
import os import anthropic from anthropic import AnthropicError, RateLimitError, AuthenticationError # 初始化客户端 os.environ["ANTHROPIC_API_KEY"]="your-anthropic-api-key" client = anthropic.Anthropic()defcall_claude(prompt:str, model:str="claude-3-5-sonnet-20240620")->str:""" 调用 Claude API 生成文本 :param prompt: 用户输入提示词 :param model: 模型名称,如 claude-3-5-sonnet、claude-3-opus :return: 生成的文本内容 """try: response = client.messages.create( model=model, max_tokens=1024, temperature=0.7, system="你是一个专业的技术助手,回答简洁准确。", messages=[{"role":"user","content": prompt}])# 提取结果(Claude 返回的是 content 列表,需拼接) result ="".join([content.text for content in response.content]).strip()print(f"Token 消耗:输入 {response.usage.input_tokens} | 输出 {response.usage.output_tokens}")return result except AuthenticationError:print("错误:API Key 认证失败,请检查密钥")return""except RateLimitError:print("错误:调用速率超限,请稍后重试")return""except AnthropicError as e:print(f"错误:Claude API 调用失败 - {e}")return""except Exception as e:print(f"未知错误:{e}")return""# 调用示例if __name__ =="__main__": prompt ="解释一下大模型的 token 计费机制" result = call_claude(prompt)print("Claude 响应结果:\n", result)
import requests import json from typing import Optional # Ollama 默认本地端口:11434 OLLAMA_BASE_URL ="http://localhost:11434/api"defcall_llama3(prompt:str, model:str="llama3:8b", stream:bool=False)-> Optional[str]:""" 通过 Ollama 调用本地部署的 LLaMA 3 :param prompt: 用户输入提示词 :param model: 模型名称(需先通过 ollama pull 下载) :param stream: 是否流式返回 :return: 生成的文本内容 """# 构建请求数据 data ={"model": model,"prompt": prompt,"system":"你是一个专业的技术助手,回答简洁准确。","temperature":0.7,"max_tokens":1024,"stream": stream }try:# 非流式调用ifnot stream: response = requests.post(f"{OLLAMA_BASE_URL}/generate", json=data, timeout=60# 本地推理可能较慢,设置较长超时) response.raise_for_status()# 抛出 HTTP 错误 result = response.json()["response"].strip()print(f"Token 消耗:输入 {response.json()['prompt_eval_count']} | 输出 {response.json()['eval_count']}")return result # 流式调用(逐字返回)else: result =""with requests.post(f"{OLLAMA_BASE_URL}/generate", json=data, stream=True, timeout=60)as response: response.raise_for_status()for line in response.iter_lines():if line: line_data = json.loads(line)if"response"in line_data: result += line_data["response"]# 实时打印(可选)# print(line_data["response"],, flush=True)if line_data.get("done"):print(f"\nToken 消耗:输入 {line_data['prompt_eval_count']} | 输出 {line_data['eval_count']}")return result.strip()except requests.exceptions.ConnectionError:print("错误:无法连接到 Ollama 服务,请确认服务已启动(ollama serve)")returnNoneexcept requests.exceptions.Timeout:print("错误:请求超时,本地推理耗时过长")returnNoneexcept Exception as e:print(f"未知错误:{e}")returnNone# 调用示例if __name__ =="__main__": prompt ="解释一下大模型的 token 计费机制"# 非流式调用 result = call_llama3(prompt)print("LLaMA 3 响应结果:\n", result)# 流式调用(可选)# result = call_llama3(prompt, stream=True)# print("\nLLaMA 3 流式响应结果:\n", result)
为了避免重复开发和快速切换模型,推荐构建统一的抽象层封装多模型调用逻辑。以下是核心流程的 Mermaid 流程图:
文本/参数
OpenAI
Claude
LLaMA 3
用户输入
请求预处理
校验输入格式
标准化 Prompt
模型路由选择
选择调用模型
OpenAI 格式适配
Claude 格式适配
LLaMA 3 格式适配
发起 API 请求
本地推理调用
结果接收
结果标准化
提取核心文本
统一 Token 统计格式
错误信息标准化
返回输出
给用户结构化结果
日志/监控记录
重试机制:使用 tenacity 库实现带退避策略的重试(如指数退避),示例:
from tenacity import retry, stop_after_attempt, wait_exponential @retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1,min=2,max=10))defcall_api_with_retry(prompt):return call_openai(prompt)
Token 预估:调用前使用 tiktoken 库预估 Token 数,避免超出预算:
import tiktoken encoder = tiktoken.encoding_for_model("gpt-4o-mini") token_count =len(encoder.encode(prompt))
掌握以上技巧,开发者可灵活构建适配不同场景的 AI 应用,兼顾成本、性能和隐私需求。
✍️ 坚持用清晰易懂的图解+可落地的代码,让每个知识点都简单直观!💡 座右铭:'道路是曲折的,前途是光明的!'

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online