0


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

首先看下流程图,大概就是下载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项目

public String talkToLlama(String text) throws IOException {
        String url = "https://你的内网穿透地址/api/chat";//请求地址

        OkHttpClient client = new OkHttpClient()
                .newBuilder()
                .connectTimeout(60, TimeUnit.SECONDS) // 设置连接超时时间
                .writeTimeout(60, TimeUnit.SECONDS) // 设置写入超时时间
                .readTimeout(60, TimeUnit.SECONDS) // 设置读取超时时间
                .build();

        // 定义请求体的媒体类型为JSON
        MediaType JSON = MediaType.get("application/json; charset=utf-8");

        String json = "{\n" +
                "\"model\": \"llama3.1\"," +
                "\"messages\": [{\"role\": \"user\", \"content\": \""+text+"\"}],"+
                "\"stream\": "+false+"}";
        RequestBody body = RequestBody.create(json, JSON);

        //发送POST请求并获取响应:
        Request request = new Request.Builder().url(url)
                .header("Authorization", "Bearer " + apiKey)
                .header("Content-Type", "application/json") // 显式设置Content-Type头
                .post(body) // 使用POST方法并传递请求体
                .build();
        // 发送请求并获取响应
        Response response = client.newCall(request).execute();
        String result = response.body().string();

        JSONObject returnJsonObject = new JSONObject(result);
        JSONObject messages = returnJsonObject.getJSONObject("message");
        // 提取 content 的值
        String content = messages.getString("content").replace("“", "").replace("\"", "").replace("\r", "").replace("\n", "");
        // 输出 content 的值
        System.out.println("回答的: " + content);
        return  content;
    }

需要使用的时候调用:

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

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

免责声名:

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

标签: spring boot llama java

本文转载自: https://blog.csdn.net/m0_69684643/article/details/140820411
版权归原作者 猪神-PIGGOD 所有, 如有侵权,请联系我们删除。

“本地部署llama 3.1生成API并且内网穿透后Spring Boot调用”的评论:

还没有评论