当前位置: 首页 > news >正文

浅谈人工智能之基于HTTP方式调用本地QWen OPenAI接口(Java版)

浅谈人工智能之基于HTTP方式调用本地QWen OPenAI接口(Java版)

概述

Qwen是阿里云推出的一款超大规模语言模型,其强大的自然语言处理能力使其成为开发智能应用的热门选择。本文将指导你如何使用Java通过HTTP方式调用Qwen的OpenAI接口,实现文本生成、问答等高级功能。
我们在使用spring ai的发现,java要求的版本是java 17,但是我们很多时候可能当前电脑安装的java 版本是8,所以我们可以通过http协议的方式进行大模型接口调用

准备工作

在开始之前,确保你已经搭建了本地Qwen大模型,并且已经明确调用的接口和消息方式,如我们调用的方式如下
请求:http://xx.xx.xxx.xxx:xxxx/v1/chat/completions
headers:Content-Type:application/json
body如下:

{"model": "QWen","messages": [{"role": "system", "content": "You are Qwen, created by Alibaba Cloud. You are a helpful assistant."},{"role": "user", "content": "你是谁?"}],"temperature": 0.7,"top_p": 0.8,"repetition_penalty": 1.05,"max_tokens": 512
}

我们可以通过上述接口使用postman进行接口调用,可以获取如下结果

{"id": "chat-a6d73e5d0e3c4d959c1b6cee07177407","object": "chat.completion","created": 1726730176,"model": "QWen","choices": [{"index": 0,"message": {"role": "assistant","content": "我是Qwen,是阿里云开发的一款超大规模语言模型。我能够生成各种类型的文本,如文章、故事、诗歌、故事等,并能根据不同的场景和需求进行变换和扩展。同时,我还具备代码写作能力,可以理解和生成多种编程语言的代码。如果您有任何问题或需要帮助,请随时告诉我!","tool_calls": []},"logprobs": null,"finish_reason": "stop","stop_reason": null}],"usage": {"prompt_tokens": 32,"total_tokens": 102,"completion_tokens": 70},"prompt_logprobs": null
}

应用实例

第一步:在你的pom.xml文件中添加以下依赖

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.6.3</version>
</dependency>

第二步:我们新建一个Qwen.class的类

package com.dahua.architectureforps.C9100.aboutHTTP;import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;public class Qwen {public static String OpenAI(String prompt){String result = "";//你实际的模型API和模型名称String baseUrl = "http://xx.xx.xxx.xxx:xxxx/v1/chat/completions";String model = "QWen";String requestBody = "{\n" +"  \"model\": \"" + model + "\",\n" +"  \"messages\": [\n" +"    {\"role\": \"system\", \"content\": \"You are Qwen, created by Alibaba Cloud. You are a helpful assistant.\"},\n" +"    {\"role\": \"user\", \"content\": \"" + prompt + "\"}\n" +"  ],\n" +"  \"temperature\": 0.7,\n" +"  \"top_p\": 0.8,\n" +"  \"repetition_penalty\": 1.05,\n" +"  \"max_tokens\": 512\n" +"}";HttpResponse execute = HttpRequest.post(baseUrl).header("Accept", "application/json").body(requestBody).execute();String body = execute.body();System.out.println(body);JSONObject jsonObject = JSONObject.parseObject(body);String choices = jsonObject.getString("choices");JSONArray choicesArray = JSONObject.parseArray(choices);String o = choicesArray.getString(0);JSONObject json = JSONObject.parseObject(o);String message = json.getString("message");JSONObject jsonMessage = JSONObject.parseObject(message);result = jsonMessage.getString("content");return result;}public static void main(String[] args) {String prompt = "你是谁?";String s = OpenAI(prompt);System.out.println(s);}
}

第三步:我们运行程序,可以得到如下结果

我是Qwen,是阿里云开发的一款超大规模语言模型。我能够生成各种类型的文本,如文章、故事、诗歌、故事等,并能回答问题、提供信息和与用户进行对话。如果您有任何问题或需要帮助,请随时告诉我!

结论

通过上述方法,你可以轻松地使用Java调用Qwen的OpenAI接口,实现各种自然语言处理任务。记住,每次调用API时都要进行身份验证,并且根据API的具体要求构建请求体。此外,务必遵循API的使用限制和最佳实践,以确保稳定性和性能。后续我们还会分享如何在java17的开发环境下使用spring ai来调用相应的大模型。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Qt_按钮类控件
  • 今日leetcode 349.两个数组的交集
  • Qt 类型选择器和类选择器的区别
  • C++学习笔记(30)
  • 【网络】传输层协议TCP
  • SpringBoot+thymeleaf竞赛报名系统
  • 解决【WVP服务+ZLMediaKit媒体服务】加入海康摄像头后,能发现设备,播放/点播失败,提示推流超时!
  • [机器学习]决策树
  • 24年蓝桥杯及攻防世界赛题-MISC-3
  • Jenkins 构建后操作(Send build artifacts over SSH)
  • Codes 开源研发项目管理平台——敏捷测试管理创新解决方案
  • JS全选反选案例
  • Git进阶(十五):Git LFS 使用详解
  • vue3使用provide和inject传递异步请求数据子组件接收不到
  • 线程(二) 线程清理和控制、线程的属性
  • 收藏网友的 源程序下载网
  • [case10]使用RSQL实现端到端的动态查询
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • ECMAScript入门(七)--Module语法
  • FineReport中如何实现自动滚屏效果
  • HashMap剖析之内部结构
  • Laravel核心解读--Facades
  • Promise面试题2实现异步串行执行
  • Python语法速览与机器学习开发环境搭建
  • SSH 免密登录
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • text-decoration与color属性
  • 百度小程序遇到的问题
  • 简析gRPC client 连接管理
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 深入浏览器事件循环的本质
  • 实现简单的正则表达式引擎
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 用Visual Studio开发以太坊智能合约
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • (19)夹钳(用于送货)
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (算法)Game
  • (图)IntelliTrace Tools 跟踪云端程序
  • (学习日记)2024.01.09
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .net6使用Sejil可视化日志
  • .NET单元测试使用AutoFixture按需填充的方法总结
  • .net反编译工具
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • @RequestMapping 和 @GetMapping等子注解的区别及其用法
  • @RequestMapping-占位符映射
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • [28期] lamp兄弟连28期学员手册,请大家务必看一下
  • [AIGC] 开源流程引擎哪个好,如何选型?
  • [C++]C++类基本语法