哎呦喂,说起这事儿我就一肚子火。上周不是手贱嘛,非得折腾什么本地部署大模型,想着自己电脑跑个AI多酷啊,结果倒好,模型倒是跑起来了,那接口地址愣是找了我三天三夜!晚上翻来覆去睡不着,手机里刷了十几个教程,不是讲得云里雾里,就是甩一句“懂得都懂”完事儿。今儿个我就当一回活雷锋,把我踩过的坑、淌过的水全给大伙儿扒拉明白,那个神秘的
先给刚入坑的兄弟们说个掏心窝子的话,你装完Ollama或者LM Studio,以为万事大吉了?屁咧!那玩意儿默认就在你电脑里闷头干活,你外面想调它,找不到门路啊。我当时就是那个状态,恨不得把电脑砸了。其实啊,绝大多数本地AI服务跑起来之后,地址就是咱们自己电脑的门口——
http://127.0.0.1:11434 这种格式。但你发现没有,光知道这个没用啊,你直接戳进去就是个404,跟对牛弹琴一样,为啥?因为它压根没“开门迎客” -1。

这就引出了咱们今天的主题,
我一开始图省事,直接抄了网上一段代码,说是加个HTTP代理就能搞定。代码长这样:

别直接抄啊,得改! export http_proxy="http://127.0.0.1:7890" export https_proxy="http://127.0.0.1:7890"
设置完了发现,诶,好像能通了,但一重启电脑就废,而且那速度慢得跟蜗牛爬似的。后来我才明白,这玩意儿是给全局网络用的,跟咱们要的AI接口代理根本不是一码事!我那会儿气的呀,差点就把电脑从窗户扔出去。真正好使的办法是啥?是得在调用AI的程序里,专门给它指明一条路。比如说你在用Python写脚本调用本地模型,你得这么干:
这才是正经八百的玩法 import requests proxies = { 'http': 'socks5://127.0.0.1:1080', 'https': 'socks5://127.0.0.1:1080' } response = requests.post('http://127.0.0.1:11434/api/generate', json={'model': 'llama2', 'prompt': '你好'}, proxies=proxies)
看见没?那个socks5://127.0.0.1:1080才是真正的代理地址 -1。但这时候问题又来了,这个端口号1080是哪冒出来的?这就得看你用的是啥代理工具了。我后来图省事儿,用了个叫 npx @ai-ql/api-proxy 的神器,一键启动,端口默认是9017,那叫一个省心 -2-6。启动完,你本地的AI接口就挂在http://127.0.0.1:9017/v1下面了,跟OpenAI的格式一毛一样,直接拿OpenAI的SDK就能连上,简直不要太爽!
我还试过一种骚操作,就是把本地的AI服务“伪装”成网上那种公用的API。比如你在本地跑了个DeepSeek模型,想在外面也能用手机连上?这时候代理就不够用了,得上内网穿透。有个叫cpolar的工具挺实在,一键给你生成个公网地址,比如https://xxxx.cpolar.cn,你把这个地址填到手机APP里,嘿,在外头也能调自己电脑里的AI了 -9。这就等于给你家AI开了个后门,随时随地使唤它,那感觉,倍儿有面儿。
说到这儿,得给大伙儿提个醒。你找本地ai接口代理地址在哪,千万别死心眼就盯着一个地方。我刚开始就犯这傻,以为所有AI都统一用一个端口,后来才发现,有的工具用11434,有的用5000,还有用8000的。最靠谱的办法是看它启动日志,那里面白纸黑字写着“Uvicorn running on http://127.0.0.1:8000”之类的信息,这才是你真正的入口 -5。
还有啊,别光顾着找地址,忘了开防火墙。我有一回折腾半天,明明地址对着呢,就是连不上。后来才反应过来,Windows防火墙把端口给我拦了!气得我直拍大腿。去控制面板把对应端口的入站规则打开,立马就通了。这些都是血泪教训啊,兄弟们。
咱就说这么个事儿,你费劲巴拉把AI部署在本地,图啥?不就图个隐私安全、不用交月费嘛。要是卡在接口地址这一步,那之前全白干。就像我邻居张哥说的:“搞这高科技,比当年追俺媳妇还费劲!”可不是咋的。
所以啊,本地ai接口代理地址在哪,其实真没想象中那么玄乎。要么是你启动服务时控制台里蹦出来的localhost:xxxx,要么是你代理软件设置的那个转发地址,再不然就是你内网穿透工具分配给你的那个五花八门的公网链接。记住这三板斧,保管你能轻松拿捏。
网友留言精选
网友“不懂就问的小白”问: 我按你说的装了那个npx代理,确实能连上了,但为啥每次关了命令行窗口就失效了?有没有一劳永逸的办法,我不想每次开机都得重新打一遍命令?
答: 哎呀,你这问题问到我心坎里了!我刚玩那会儿也为这事儿烦得不行。每次开机都得重新开个终端,敲一遍npx @ai-ql/api-proxy,有时候忘了,程序就报错,气得我呀。后来我琢磨出一个土办法,但特管用——把它做成Windows服务。你听我慢慢说。
其实原理很简单,那个命令行程序之所以一关窗口就挂,是因为它是前台运行的。咱们得让它像电脑里的杀毒软件一样,在后台偷偷跑着,开机就自启。
如果你用的是Windows,可以试试用NSSM这个工具。先去官网下载nssm.exe,放到一个固定的文件夹里。然后用管理员权限打开命令提示符,输入nssm install AiProxy,这时候会弹出一个窗口,在“Path”那一栏填上npx的完整路径(一般就是C:\Users\你的用户名\AppData\Roaming\npm\npx.cmd),在“Arguments”那一栏填上@ai-ql/api-proxy --port 9017。点“Install service”,就大功告成了!之后在Windows服务列表里找到这个服务,设置为自动启动,以后每次开机它就默默在后台帮你代理,你都不用管它,省心不省心?-2
要是你用的是Mac或者Linux,更简单,用systemd或者launchd。我拿Ubuntu举例,写一个service文件放/etc/systemd/system/ai-proxy.service,内容大概就是:
[Unit] Description=AI API Proxy [Service] ExecStart=/usr/bin/npx @ai-ql/api-proxy --port 9017 Restart=always User=你的用户名 [Install] WantedBy=multi-user.target
然后执行sudo systemctl enable ai-proxy和sudo systemctl start ai-proxy,搞定!这样一劳永逸,你再也不用为了那个本地ai接口代理地址在哪而每次开机重新配置了,它就在那里,稳稳当当的。-4
网友“代码抠脚大汉”问: 老哥,你说的那些代理都是给Python或者命令行用的,我用的是Java项目,里头要连本地AI模型,这本地ai接口代理地址在哪配置啊?整了半天没整明白,都快怀疑人生了。
答: 哎哟,同行啊兄弟!我之前给公司写个Java后端,要对接本地跑的通义千问模型,也是折腾得够呛。Java这玩意儿跟Python不太一样,它自个儿没有直接配系统代理那一说,得在代码里搞。不过你放心,我给你说两个路子,包教包会。
第一个路子,也是最正统的,用OkHttp或者Apache HttpClient,这两个是Java里最常用的HTTP客户端,它们都支持设置代理。比如你用OkHttp,代码可以这样写:
import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; import java.net.InetSocketAddress; import java.net.Proxy; public class AiCaller { public static void main(String[] args) throws Exception { // 这里指定你本地代理的地址,比如用npx跑出来的9017端口 Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("127.0.0.1", 9017)); OkHttpClient client = new OkHttpClient.Builder() .proxy(proxy) .build(); Request request = new Request.Builder() .url("http://127.0.0.1:11434/api/generate") // 你的模型实际地址 .post(RequestBody.create(MediaType.parse("application/json"), "{\"model\": \"llama2\", \"prompt\": \"你好\"}")) .build(); try (Response response = client.newCall(request).execute()) { System.out.println(response.body().string()); } } }
第二个路子,如果你用的是Spring Boot,那就更优雅了。在application.yml里直接配,不用改代码:
server: port: 8080 Spring 5 之后的 WebClient 配置 spring: webflux: client: proxy: host: 127.0.0.1 port: 9017 如果是http代理,就写http,socks代理就写socks type: SOCKS
或者在启动类里写个配置类,全局注入一个带代理的RestTemplate,这样整个项目的请求都能走代理了。关键点就在于,你得知道你的代理类型是HTTP还是SOCKS,端口对不对得上。我当初就是没搞清楚类型,填了个HTTP代理,结果死活连不上,后来换成SOCKS5立马通了 -1-5。这玩意儿就跟找对象一样,光有热情不够,还得找对路子,不然就是热脸贴冷屁股。
网友“资深社恐患者”问: 我把本地AI服务跑起来了,用你教的方法也连上了,但问题是我这模型它不能上网搜东西啊,问它今天的新闻它说不知道。我听说可以接API,但那个本地ai接口代理地址在哪配置?复杂不?
答: 哈哈,这个问题问得好!我刚玩本地模型那会儿也特别纠结这事儿。模型再牛,知识库也是旧的,让它写个2025年的段子它都一脸懵。这不怪模型,怪咱没给人家配好“外挂”。
给本地AI加联网能力,说白了就是找个引擎给它当“眼睛”。这事儿没那么复杂,我给你捋捋。
最简单的一招,用必应的API。微软挺大方,新用户有1000次/月的免费额度,够咱自个儿折腾一阵子了。你去Azure Portal注册个账号,申请个Bing Search的API密钥,然后就完事儿了。关键来了,这个API怎么跟你的本地AI对接?你得写个中间层。
我一般这么干:在本地写个简单的Flask服务,里面调用必应API。然后把你的本地模型请求这个Flask服务,拿到结果,再让模型根据结果回答问题。这样你的本地AI就“长眼睛”了。这个Flask服务跑起来之后,它的本地ai接口代理地址在哪?就是你启动时控制台打印的那个,一般是http://127.0.0.1:5000 -1。
代码也不复杂,我贴一段给你瞅瞅:
from flask import Flask, request, jsonify import requests app = Flask(__name__) 必应配置 BING_API_KEY = "你的密钥" BING_ENDPOINT = "https://api.bing.microsoft.com/v7.0/search" @app.route('/search', methods=['POST']) def search(): query = request.json.get('query') headers = {"Ocp-Apim-Subscription-Key": BING_API_KEY} params = {"q": query, "count": 5} response = requests.get(BING_ENDPOINT, headers=headers, params=params) results = response.json() 提取结果的关键内容 search_results = [] for item in results.get('webPages', {}).get('value', []): search_results.append(item['snippet']) return jsonify({"results": search_results}) if __name__ == '__main__': app.run(host='127.0.0.1', port=5000)
然后你调本地模型的时候,先调这个接口,把结果塞到模型的消息里,模型就能“看到”外面的世界了。这么一搞,你再问它“今天发生了什么大事儿”,它就能给你扯上几句了 -1。
要是嫌写代码麻烦,还有更省事的,直接用那些现成的“混合推理”工具。比如LiteLLM,它能当个中转站,你把本地模型和必应API都配进去,它自动帮你做路由和整合。这玩意儿支持Docker一键部署,配置好之后,你的本地ai接口代理地址在哪就是LiteLLM给你的那个地址,比如http://localhost:4000,你所有请求都发给它,它自动决定是走本地模型还是联网,高级不高级?-4 总之啊,办法总比困难多,只要肯琢磨,你那个本地AI也能眼观六路耳听八方!
扫一扫微信交流