当前位置:   article > 正文

本地部署llama 3.1生成API并且内网穿透后Spring Boot调用_llama3.1 api

llama3.1 api

首先看下流程图,大概就是下载ollama客户端后下载llama3.1模型启动服务,使用花生壳内网穿透获得新的API地址,然后SpringBoot中采用OKHttpClient调用。

01、下载安装ollama客户端

官网下载地址: https://ollama.com/download

选择自己的系统,我这里演示Windows的

下载完成后获得.exe文件双击安装,一直下一步就行

安装完成后,Win+R键调出运行窗口:

ollama -v

出现 版本号就成功了

 02、下载Llama 3.1 大模型

因为大模型比较大,推荐不要使用默认下载地址(默认下载到C盘)

(1)修改环境变量

搜索环境

新建我这三个变量

OLLAMA_HOST   0.0.0.0:11434

OLLAMA_ORIGINS  *

OLLAMA_MODELS  [自定义模型存的位置]

 (2)下载llama3.1模型

下载地址:https://ollama.com/library/llama3.1

 

这里家用电脑就选8b就行,复制命令:

ollama run llama3.1

键盘win+R 打开cmd运行上面这个命令

 下载完成后随便和他聊会天,测试下

原版的llama3.1-8b模型中文能力几乎没有,后面我出如何改中文模型这里不过多说明

可以对话,就说明安装成功

  03、测试API

上面的cmd不要关!!!

(1)浏览官方API文档

API文档地址:https://github.com/ollama/ollama/blob/main/docs/api.md#create-a-blob

快速上手试一试

打开你的postman,我这里用的是Apifox,都一样,能发post请求就行

 

返回成我这样就成功了

注:如果出现这个错误

格式化一下就可以 

postman里面应该是“美化”,反正都一样。

 03、内网穿透

首先下载花生壳客户端

下载地址:花生壳客户端官方下载 - 贝锐花生壳官网

一样获得.exe的安装文件,双击一直下一步安装完成(可以自定义安装路径)

 

 点击添加映射,去网页填上自己的IPV4的地址

 最后获得了映射的公网IP

:关闭之前启动的cmd (重要

重新用ollama serve启动

ollama serve

 

第一个报错:是因为开机自动启动ollama,用任务管理器关掉就可以

看到第二个的内容就是正常启动了

将你的内网穿透的地址复制到浏览器如果出现这个就成功了

也可以用postman测试玩一下

 04、Spring Boot中api调用

打开你的springboot项目

  1. public String talkToLlama(String text) throws IOException {
  2. String url = "https://你的内网穿透地址/api/chat";//请求地址
  3. OkHttpClient client = new OkHttpClient()
  4. .newBuilder()
  5. .connectTimeout(60, TimeUnit.SECONDS) // 设置连接超时时间
  6. .writeTimeout(60, TimeUnit.SECONDS) // 设置写入超时时间
  7. .readTimeout(60, TimeUnit.SECONDS) // 设置读取超时时间
  8. .build();
  9. // 定义请求体的媒体类型为JSON
  10. MediaType JSON = MediaType.get("application/json; charset=utf-8");
  11. String json = "{\n" +
  12. "\"model\": \"llama3.1\"," +
  13. "\"messages\": [{\"role\": \"user\", \"content\": \""+text+"\"}],"+
  14. "\"stream\": "+false+"}";
  15. RequestBody body = RequestBody.create(json, JSON);
  16. //发送POST请求并获取响应:
  17. Request request = new Request.Builder().url(url)
  18. .header("Authorization", "Bearer " + apiKey)
  19. .header("Content-Type", "application/json") // 显式设置Content-Type头
  20. .post(body) // 使用POST方法并传递请求体
  21. .build();
  22. // 发送请求并获取响应
  23. Response response = client.newCall(request).execute();
  24. String result = response.body().string();
  25. JSONObject returnJsonObject = new JSONObject(result);
  26. JSONObject messages = returnJsonObject.getJSONObject("message");
  27. // 提取 content 的值
  28. String content = messages.getString("content").replace("“", "").replace("\"", "").replace("\r", "").replace("\n", "");
  29. // 输出 content 的值
  30. System.out.println("回答的: " + content);
  31. return content;
  32. }

需要使用的时候调用:

String resultText = talkToLlama("自我介绍下")

总结:

经过实测,虽然llama-8b的使用体验不如ChatGPT-4等成熟的闭源大模型(别拿405b的比较,哪个家用电脑用的起),但是本地运行模式还是有其存在的意义的,对于私密性要求较强的用户,也可以在断网的情况下本地加载运行,不用担心相关信息泄露等等。

免责声名:

一切均严格参照ollama开源策略,没有任何侵权意图,本文章全由自己编写,如出现任何问题请联系我,我将删除。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/991220
推荐阅读
相关标签
  

闽ICP备14008679号