OpenRouter开源的AI大模型路由工具,统一API调用

news2025/4/8 20:09:28

简介

OpenRouter是一个开源的路由工具‌,它可以绕过限制调用GPT、Claude等国外模型。以下是对它的详细介绍:

一、主要功能

OpenRouter专注于将用户请求智能路由到不同的AI模型,并提供统一的访问接口。它就像一个“路由器”,能够根据预设规则或用户自定义策略,将用户输入的请求自动分配至最合适的AI模型。这大大简化了与AI模型交互的过程,降低了开发者的集成复杂度。

二、技术特点

  1. 多模型支持‌:OpenRouter集成了来自多个提供商的模型,包括知名的闭源模型(如OpenAI的GPT-4、Anthropic的Claude等)和开源模型(如LLaMA、Mistral等)。目前支持数十种模型,未来计划扩展到数百种。
  2. 统一API‌:OpenRouter的API与OpenAI的聊天API高度兼容,用户只需更换API密钥和基础URL,就能轻松切换模型,无需修改代码。
  3. 价格与性能优化‌:OpenRouter通过比较不同模型的定价和性能,帮助用户找到性价比最高的选项。它还会根据用户的需求(如低成本或高吞吐量)自动路由请求到最佳提供商。
  4. 自动路由与回退机制‌:通过“Auto Router”功能,OpenRouter会根据输入提示选择最适合的模型。如果某个模型或提供商不可用,它会自动尝试其他替代模型,确保服务不中断。

官网:OpenRouter

在OpenRouter,可以看到模型的排名,也可以看到某个模型的使用软件排名,比如DeepSeek-V3模型的使用软件排名为:

安装和设置

安装依赖库

只需要安装openai库即可

pip install openai

如果不是代码调用,而是直接用AI工具调用 OpenRouter ,那么openai也可以省略。

获取OpenRouter秘钥

登录openrouter官网,然后创建秘钥key,记下它,以备使用。

查找模型

在这里查找模型:Models | OpenRouter

决定使用DeepSeek: DeepSeek V3 Base (free) 这个模型。当然还可以使用DeepSeek: DeepSeek V3 0324 (free) 这个模型。

API接入

测试

可以使用如下语句测试API调用:

from openai import OpenAI

client = OpenAI(
  base_url="https://openrouter.ai/api/v1",
  api_key="<OPENROUTER_API_KEY>",
)

completion = client.chat.completions.create(
  extra_headers={
    "HTTP-Referer": "<YOUR_SITE_URL>", # Optional. Site URL for rankings on openrouter.ai.
    "X-Title": "<YOUR_SITE_NAME>", # Optional. Site title for rankings on openrouter.ai.
  },
  extra_body={},
  model="deepseek/deepseek-v3-base:free",
  messages=[
    {
      "role": "user",
      "content": "What is the meaning of life?"
    }
  ]
)
print(completion.choices[0].message.content)

把自己的key填进去就行了

from openai import OpenAI

client = OpenAI(
  base_url="https://openrouter.ai/api/v1",
  api_key="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",
)

completion = client.chat.completions.create(
  extra_headers={
    "HTTP-Referer": "airoot.org", # Optional. Site URL for rankings on openrouter.ai.
    "X-Title": "airoot", # Optional. Site title for rankings on openrouter.ai.
  },
  extra_body={},
  model="deepseek/deepseek-v3-base:free",
  messages=[
    {
      "role": "user",
      "content": "What is the meaning of life?"
    }
  ]
)
print(completion.choices[0].message.content)

但是在实际执行后就卡住了,不明白什么原因(后来就好了...不知道是不是时间和网络问题)

换用CURL进行测试,有时候会有空白的回车输出。不知道是不是openai版本不对导致的? (弄明白了,就是刚开始会打好几个回车符....)

curl https://openrouter.ai/api/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 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" \
  -d '{
  "model": "deepseek/deepseek-chat-v3-0324:free",
  "messages": [
    {
      "role": "user",
      "content": "What is the meaning of life?"
    }
  ]
  
}'

也可用python直接调用requests进行了测试:

import requests
import json

response = requests.post(
  url="https://openrouter.ai/api/v1/chat/completions",
  headers={
    "Authorization": "Bearer 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",
    "Content-Type": "application/json",
    "HTTP-Referer": "airoot.org", # Optional. Site URL for rankings on openrouter.ai.
    "X-Title": "airoot", # Optional. Site title for rankings on openrouter.ai.
  },
  data=json.dumps({
    "model": "deepseek/deepseek-chat-v3-0324:free",
    "messages": [
      {
        "role": "user",
        "content": "What is the meaning of life?"
      }
    ],
    
  })
)
print(response.content)

 测试通过,输出:

print(response.content)
b'\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n\n         \n{"id":"gen-1743689975-7NxUuvZaolfKKM9NJaz7","provider":"Chutes","model":"deepseek/deepseek-chat-v3-0324","object":"chat.completion","created":1743689975,"choices":[{"logprobs":null,"finish_reason":"stop","native_finish_reason":"stop","index":0,"message":{"role":"assistant","content":"The meaning of life is one of the most profound and debated questions in philosophy, religion, science, and personal reflection. Different perspectives offer various answers:\\n\\n### 1. **Philosophical Perspectives**  \\n   - **Existentialism (e.g., Sartre, Camus):** Life has no inherent meaning\xe2\x80\x94it\xe2\x80\x99s up to each individual to create their own purpose through choices and actions.  \\n   - **Absurdism (Camus):** The search for meaning in a meaningless universe is absurd, but we must embrace life passionately anyway.  \\n   - **Stoicism:** Meaning comes from living virtuously, accepting what we can\xe2\x80\x99t control, and focusing on inner peace.  \\n\\n### 2. **Religious/Spiritual Views**  \\n   - **Theistic religions (Christianity, Islam, Hinduism, etc.):** Life\xe2\x80\x99s purpose is tied to divine will\xe2\x80\x94serving God, achieving enlightenment, or fulfilling a spiritual destiny.  \\n   - **Buddhism:** Meaning arises from ending suffering (dukkha) through enlightenment (nirvana) and compassion.  \\n\\n### 3. **Scientific Perspectives**  \\n   - **Evolutionary Biology:** Life\xe2\x80\x99s \\"purpose\\" is survival and reproduction, but humans seek deeper significance beyond biology.  \\n   - **Cosmology:** In a vast, indifferent universe, meaning is a human construct\xe2\x80\x94we give it value through curiosity, connection, and exploration.  \\n\\n### 4. **Personal Meaning**  \\n   Many find purpose in relationships, creativity, helping others, personal growth, or leaving a legacy. Viktor Frankl (Holocaust survivor and psychiatrist) argued that meaning comes from suffering with dignity, love, and purposeful work.  \\n\\n### **A Practical Answer?**  \\nThere\xe2\x80\x99s no single \\"correct\\" answer\xe2\x80\x94it\xe2\x80\x99s a personal journey. You might explore:  \\n- What brings you joy or fulfillment?  \\n- How do you impact others?  \\n- What legacy do you want to leave?  \\n\\nWould you like insights from a specific tradition or thinker?","refusal":null}}],"usage":{"prompt_tokens":10,"completion_tokens":417,"total_tokens":427}}'

在Cherry Studio中配置使用

打开Cherry Studio,点击设置,在模型平台里找到OpenRouter,写入API秘钥,在“管理”里面加入DeepSeek-v3模型,点击“检查”, 测试通过。

在“助手”也就是chat页面,进行对话:

总结

OpenRouter可以很好的绕过封锁!

另外OpenRouter还提供一些免费调用AI大模型调用,比如DeepSeek-v3就可以免费调用,真是太棒了!

 

另外根据调试记录,有如下3点需要注意:

1 秘钥key注意写对

2 有的模型会输出一些回车,导致误以为模型有问题

3 有时候会很慢或卡住,但换个时间就好了。

调试

测试curl调用报错{"error":{"message":"Input required: specify \"prompt\" or \"messages\"","code":400}

{"error":{"message":"Input required: specify \"prompt\" or \"messages\"","code":400},"user_id":"user_2v6XcG4tOfqFTUs1itXIJCI4Mic"}

不明白哪里错了,反正最后就没报错了。

报错:"No auth credentials found"

key写错了,改正即可

使用openai和curl测试没有得到期望的输出

有时候可以看到光标在往下走,但是看不到输出信息。不明白为什么。

换用DeepSeek: DeepSeek V3 0324 (free)模型就好了。

在换回deepseek/deepseek-v3-base:free 这个模型,也测试通过了。

需要注意的3点:

1 秘钥key注意写对

2 有的模型会输出一些回车,导致误以为模型有问题

3 有时候会很慢或卡住,但换个时间就好了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2328166.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

zabbix监控网站(nginx、redis、mysql)

目录 前提准备&#xff1a; zabbix-server主机配置&#xff1a; 1. 安装数据库 nginx主机配置&#xff1a; 1. 安装nginx redis主机配置&#xff1a; 1. 安装redis mysql主机配置&#xff1a; 1. 安装数据库 zabbix-server&#xff1a; 1. 安装zabbix 2. 编辑配置文…

蓝桥杯冲刺

例题1&#xff1a;握手问题 方法1&#xff1a;数学推理(简单粗暴&#xff09; 方法2&#xff1a;用代码实现方法1 #include<iostream> using namespace std; int main() {int result 0;for (int i 1; i < 49; i){for (int j i 1; j < 50; j){//第i个人与第j个…

Spring Security(maven项目) 3.1.0

前言&#xff1a; 通过实践而发现真理&#xff0c;又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识&#xff0c;又从理性认识而能动地指导革命实践&#xff0c;改造主观世界和客观世界。实践、认识、再实践、再认识&#xff0c;这种形式&#xff0c;循环往…

C# 从代码创建选型卡+表格

private int tabNum 1; private int sensorNum 5; private void InitializeUI() {// 创建右侧容器面板Panel rightPanel new Panel{Dock DockStyle.Right,Width 300,BackColor SystemColors.ControlDark,Parent this};// 根据防区数量创建内容if (tabNum &g…

OpenCV 从入门到精通(day_02)

1. 边缘填充 为什么要填充边缘呢&#xff1f;我们以下图为例&#xff1a; 可以看到&#xff0c;左图在逆时针旋转45度之后原图的四个顶点在右图中已经看不到了&#xff0c;同时&#xff0c;右图的四个顶点区域其实是什么都没有的&#xff0c;因此我们需要对空出来的区域进行一个…

Ceph异地数据同步之-RBD异地同步复制(上)

#作者&#xff1a;闫乾苓 文章目录 前言基于快照的模式&#xff08;Snapshot-based Mode&#xff09;工作原理单向同步配置步骤单向同步复制测试双向同步配置步骤双向同步复制测试 前言 Ceph的RBD&#xff08;RADOS Block Device&#xff09;支持在两个Ceph集群之间进行异步镜…

【C++】STL库_stack_queue 的模拟实现

栈&#xff08;Stack&#xff09;、队列&#xff08;Queue&#xff09;是C STL中的经典容器适配器 容器适配器特性 不是独立容器&#xff0c;依赖底层容器&#xff08;deque/vector/list&#xff09;通过限制基础容器接口实现特定访问模式不支持迭代器操作&#xff08;无法遍历…

一周学会Pandas2 Python数据处理与分析-编写Pandas2 HelloWord项目

锋哥原创的Pandas2 Python数据处理与分析 视频教程&#xff1a; 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们首先准备一个excel文件&#xff0c;用来演示pandas操作数据集(数据的集合)。excel文件属于数据集的一种&#xf…

【易订货-注册/登录安全分析报告】

前言 由于网站注册入口容易被机器执行自动化程序攻击&#xff0c;存在如下风险&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露&#xff0c;不符合国家等级保护的要求。短信盗刷带来的拒绝服务风险 &#xff0c;造成用户无法登陆、注册&#xff0c;大量收到垃圾短信的…

如何在Windows上找到Python安装路径?两种方法快速定位

原文&#xff1a;如何在Windows上找到Python安装路径&#xff1f;两种方法快速定位 | w3cschool笔记 在 Windows 系统上找到 Python 的安装路径对于设置环境变量或排查问题非常重要。本文将介绍两种方法&#xff0c;帮助你找到 Python 的安装路径&#xff1a;一种是通过命令提…

lvgl避坑记录

一、log调试 #if LV_USE_LOG && LV_LOG_LEVEL > LV_LOG_LEVEL_INFOswitch(src_type) {case LV_IMG_SRC_FILE:LV_LOG_TRACE("lv_img_set_src: LV_IMG_SRC_FILE type found");break;case LV_IMG_SRC_VARIABLE:LV_LOG_TRACE("lv_img_set_src: LV_IMG_S…

element-plus中,表单校验的使用

目录 一.案例1&#xff1a;给下面的表单添加校验 1.目的要求 2.步骤 ①给需要校验的el-form-item项&#xff0c;添加prop属性 ②定义一个表单校验对象&#xff0c;里面存放了每一个prop的检验规则 ③给el-form组件&#xff0c;添加:rules属性 ④给el-form组件&#xff0…

PyTorch复现线性模型

【前言】 本专题为PyTorch专栏。从本专题开始&#xff0c;我将通过使用PyTorch编写基础神经网络&#xff0c;带领大家学习PyTorch。并顺便带领大家复习以下深度学习的知识。希望大家通过本专栏学习&#xff0c;更进一步了解人更智能这个领域。 材料来源&#xff1a;2.线性模型_…

Kafka+Zookeeper从docker部署到spring boot使用完整教程

文章目录 一、Kafka1.Kafka核心介绍&#xff1a;​核心架构​核心特性​典型应用 2.Kafka对 ZooKeeper 的依赖&#xff1a;3.去 ZooKeeper 的演进之路&#xff1a;注&#xff1a;&#xff08;本文采用ZooKeeper3.8 Kafka2.8.1&#xff09; 二、Zookeeper1.核心架构与特性2.典型…

RK3568驱动 SPI主/从 配置

一、SPI 控制器基础配置(先说主的配置&#xff0c;后面说从的配置) RK3568 集成高性能 SPI 控制器&#xff0c;支持主从双模式&#xff0c;最高传输速率 50MHz。设备树配置文件路径通常为K3568/rk356x_linux_release_v1.3.1_20221120/kernel/arch/arm64/boot/dts/rockchip。 …

【全队项目】智能学术海报生成系统PosterGenius--风格个性化调整

​ &#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#x1f3c0;大模型实战训练营 ​&#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 1.前言 PosterGenius致力于开发一套依托DeepSeek…

【系统移植】(六)第三方驱动移植

【系统移植】&#xff08;六&#xff09;第三方驱动移植 文章目录 【系统移植】&#xff08;六&#xff09;第三方驱动移植1.编译驱动进内核方法一&#xff1a;编译makefile方法二&#xff1a;编译kconfig方法三&#xff1a;编译成模块 2.字符设备框架 编译驱动进内核a. 选择驱…

STM32实现一个简单电灯

新建工程的步骤 建立工程文件夹&#xff0c;Keil中新建工程&#xff0c;选择型号工程文件夹里建立Start、Library、User等文件夹&#xff0c;复制固件库里面的文件到工程文件夹工程里对应建立Start、Library、User等同名称的分组&#xff0c;然后将文件夹内的文件添加到工程分组…

【shiro】shiro反序列化漏洞综合利用工具v2.2(下载、安装、使用)

1 工具下载 shiro反序列化漏洞综合利用工具v2.2下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1kvQEMrMP-PZ4K1eGwAP0_Q?pwdzbgp 提取码&#xff1a;zbgp其他工具下载&#xff1a; 除了该工具之外&#xff0c;github上还有其他大佬贡献的各种工具&#xff0c;有…

vue进度条组件

<div class"global-mask" v-if"isProgress"><div class"contentBox"><div class"progresstitie">数据加载中请稍后</div><el-progress class"progressStyle" :color"customColor" tex…