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

定制网站建设哪家便宜宁波网络推广团队

定制网站建设哪家便宜,宁波网络推广团队,手机网站建设专家,如何让搜索引擎收录网站文章目录 文心一言应用创建接口对接接口文档代码示例依赖 常量类实体类 结束语 文心一言应用创建 首先需要先申请文心千帆大模型,申请地址:文心一言 (baidu.com),点击加入体验,等通过审核之后就可以进入文心千帆大模型后台进行应…

文章目录

  • 文心一言应用创建
  • 接口对接
    • 接口文档
    • 代码示例
      • 依赖
    • 常量类
      • 实体类
  • 结束语

文心一言应用创建

首先需要先申请文心千帆大模型,申请地址:文心一言 (baidu.com),点击加入体验,等通过审核之后就可以进入文心千帆大模型后台进行应用管理了。

在百度智能云首页即可看到文心千帆大模型平台

然后进入后台管理之后,点击应用接入,创建应用即可

创建完应应用之后,便可以调用文心一言的http开发接口进行交互了。

接口对接

接口文档

首先要看一下接口文档:API调用指南 - 文心千帆WENXINWORKSHOP | 百度智能云文档 (baidu.com)

这里我用的是ERNIE-Bot-turbo API,主要是由于它响应更快。

下面介绍一下具体接入的代码

代码示例

依赖

依赖安装

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>baidu</artifactId><groupId>com.walter</groupId><version>1.0</version></parent><modelVersion>4.0.0</modelVersion><version>1.0</version><artifactId>baidumodel</artifactId><description>百度大模型</description><repositories><repository><id>public</id><name>aliyun nexus</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></repository></repositories><dependencies><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.11.1</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-http</artifactId><version>5.8.11</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-json</artifactId><version>5.8.11</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.12</version></dependency><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp-sse</artifactId><version>3.14.9</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.30</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.30</version></dependency></dependencies>
</project>

常量类

ApiConstant.java

@Slf4j
public class ApiConstant {/*** ERNIE_BOT_TURBO 发起会话接口*/public static final String ERNIE_BOT_TURBO_INSTANT = "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant?access_token=";public static String getToken(String appKey, String secretKey) {String url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=" + appKey + "&client_secret=" + secretKey;String s = HttpUtil.get(url);Token bean = JSONUtil.toBean(s, Token.class);return bean.getAccess_token();}
}

实体类

BaiduChatMessage.java

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BaiduChatMessage implements Serializable {private String role;private String content;
}

ErnieBotTurboResponse.java

@Data
public class ErnieBotTurboResponse implements Serializable {private String id;private String object;private Integer created;private String sentence_id;private Boolean is_end;private Boolean is_truncated;private String result;private Boolean need_clear_history;private Usage usage;@Datapublic static class Usage implements Serializable {private Integer prompt_tokens;private Integer completion_tokens;private Integer total_tokens;}
}

ErnieBotTurboStreamParam.java

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ErnieBotTurboStreamParam implements Serializable {private List<BaiduChatMessage> messages;private Boolean stream;private String user_id;public boolean isStream() {return Objects.equals(this.stream, true);}
}

Token.java

@Data
public class Token implements Serializable {private String access_token;private Integer expires_in;private String error;private String error_description;
}

BaiduEventSourceListener.java

// 这个类主要是为了与文心一言API建立流式连接,实现数据的实时返回,而不是等完整的数据生成之后才将数据返回
// 可以减少用户等待时间,实现更好的交互体验
@Slf4j
public class BaiduEventSourceListener extends EventSourceListener {@Overridepublic void onOpen(EventSource eventSource, Response response) {log.info("baidu建立sse连接...");}@Overridepublic void onEvent(EventSource eventSource, String id, String type, String data) {log.info("baidu返回数据:{}", data);}@Overridepublic void onClosed(EventSource eventSource) {log.info("baidu关闭sse连接...");}@SneakyThrows@Overridepublic void onFailure(EventSource eventSource, Throwable t, Response response) {if(Objects.isNull(response)){log.error("baidu  sse连接异常:{}", t);eventSource.cancel();return;}ResponseBody body = response.body();if (Objects.nonNull(body)) {log.error("baidu  sse连接异常data:{},异常:{}", body.string(), t);} else {log.error("baidu  sse连接异常data:{},异常:{}", response, t);}eventSource.cancel();}
}

BaiduService.java

// 该类主要是处理接口请求,处理接口响应逻辑
@Slf4j
@Data
public class BaiduService {private static final long TIME_OUT = 30;private OkHttpClient okHttpClient;private String appKey;private String secretKey;public BaiduService(@NonNull String appKey, @NonNull String secretKey) {this.appKey = appKey;this.secretKey = secretKey;this.okHttpClient(30, 30, 30, null);}public BaiduService(@NonNull String appKey, @NonNull String secretKey, long connectTimeout, long writeTimeout, long readTimeout, Proxy proxy) {this.appKey = appKey;this.secretKey = secretKey;this.okHttpClient(connectTimeout, writeTimeout, readTimeout, proxy);}private void okHttpClient(long connectTimeout, long writeTimeout, long readTimeout, Proxy proxy) {OkHttpClient.Builder client = new OkHttpClient.Builder();client.connectTimeout(connectTimeout, TimeUnit.SECONDS);client.writeTimeout(writeTimeout, TimeUnit.SECONDS);client.readTimeout(readTimeout, TimeUnit.SECONDS);if (Objects.nonNull(proxy)) {client.proxy(proxy);}this.okHttpClient = client.build();}// 该方法是同步请求API,会等大模型将数据完全生成之后,返回响应结果,可能需要等待较长时间,视生成文本长度而定public ErnieBotTurboResponse ernieBotTurbo(ErnieBotTurboStreamParam param) {if (param == null) {log.error("参数异常:param不能为空");throw new RuntimeException("参数异常:param不能为空");}if (param.isStream()) {param.setStream(false);}String post = HttpUtil.post(ApiConstant.ERNIE_BOT_TURBO_INSTANT + ApiConstant.getToken(appKey, secretKey), JSONUtil.toJsonStr(param));return JSONUtil.toBean(post, ErnieBotTurboResponse.class);}// 该方法是通过流的方式请求API,大模型每生成一些字符,就会通过流的方式相应给客户端,// 我们是在 BaiduEventSourceListener.java 的 onEvent 方法中获取大模型响应的数据,其中data就是具体的数据,// 我们获取到数据之后,就可以通过 SSE/webscocket 的方式实时相应给前端页面展示public void ernieBotTurboStream(ErnieBotTurboStreamParam param, EventSourceListener eventSourceListener) {if (Objects.isNull(eventSourceListener)) {log.error("参数异常:EventSourceListener不能为空");throw new RuntimeException("参数异常:EventSourceListener不能为空");}if (param == null) {log.error("参数异常:param不能为空");throw new RuntimeException("参数异常:param不能为空");}if (!param.isStream()) {param.setStream(true);}try {EventSource.Factory factory = EventSources.createFactory(this.okHttpClient);ObjectMapper mapper = new ObjectMapper();String requestBody = mapper.writeValueAsString(param);Request request = new Request.Builder().url(ApiConstant.ERNIE_BOT_TURBO_INSTANT + ApiConstant.getToken(appKey, secretKey)).post(RequestBody.create(MediaType.parse(ContentType.JSON.getValue()), requestBody)).build();//创建事件EventSource eventSource = factory.newEventSource(request, eventSourceListener);} catch (JsonProcessingException e) {log.error("请求参数解析是失败!", e);throw new RuntimeException("请求参数解析是失败!", e);}}
}

结束语

以上就是通过文心一言的OpenAPI与大模型交互的整体逻辑,等代码功能再做完善之后,改代码会以SDK的方式开源到Gitee,欢迎一起探讨。


文章转载自:
http://dinncocounterview.ydfr.cn
http://dinncozwinglianism.ydfr.cn
http://dinncotripoli.ydfr.cn
http://dinncodyspathy.ydfr.cn
http://dinncosimulacra.ydfr.cn
http://dinnconumbles.ydfr.cn
http://dinncoassignee.ydfr.cn
http://dinncotelegraphone.ydfr.cn
http://dinncocartouche.ydfr.cn
http://dinncoethane.ydfr.cn
http://dinncosurrejoin.ydfr.cn
http://dinncophalanstery.ydfr.cn
http://dinncotokio.ydfr.cn
http://dinncoliberalize.ydfr.cn
http://dinncopereiopod.ydfr.cn
http://dinncofacta.ydfr.cn
http://dinncocannonproof.ydfr.cn
http://dinncokerogen.ydfr.cn
http://dinncocamalig.ydfr.cn
http://dinncosuffrutescent.ydfr.cn
http://dinncocoercible.ydfr.cn
http://dinncopangolin.ydfr.cn
http://dinncoanatoxin.ydfr.cn
http://dinncobuffoon.ydfr.cn
http://dinncopacifier.ydfr.cn
http://dinncovideoize.ydfr.cn
http://dinncochoreatic.ydfr.cn
http://dinncobranchy.ydfr.cn
http://dinncomalines.ydfr.cn
http://dinncoincorporation.ydfr.cn
http://dinncoentasia.ydfr.cn
http://dinncobossed.ydfr.cn
http://dinncofundament.ydfr.cn
http://dinncoparsimonious.ydfr.cn
http://dinncocrowded.ydfr.cn
http://dinncoreadset.ydfr.cn
http://dinncoexaltedly.ydfr.cn
http://dinncodarning.ydfr.cn
http://dinncometz.ydfr.cn
http://dinncocommemorate.ydfr.cn
http://dinncohinkty.ydfr.cn
http://dinncovariator.ydfr.cn
http://dinncoguttifer.ydfr.cn
http://dinncoawedly.ydfr.cn
http://dinncoexchange.ydfr.cn
http://dinncoatrocious.ydfr.cn
http://dinncochemigraphic.ydfr.cn
http://dinncolooped.ydfr.cn
http://dinncoconsonancy.ydfr.cn
http://dinncocommenter.ydfr.cn
http://dinncomillie.ydfr.cn
http://dinncobreathhold.ydfr.cn
http://dinncoforelock.ydfr.cn
http://dinncoharari.ydfr.cn
http://dinncosandakan.ydfr.cn
http://dinncoinsectifuge.ydfr.cn
http://dinncoobpyramidal.ydfr.cn
http://dinncowho.ydfr.cn
http://dinncoratel.ydfr.cn
http://dinncobarnacles.ydfr.cn
http://dinncoexpulsive.ydfr.cn
http://dinncofogbank.ydfr.cn
http://dinncodarter.ydfr.cn
http://dinncohardtack.ydfr.cn
http://dinncovolcanize.ydfr.cn
http://dinncogusset.ydfr.cn
http://dinncovariedness.ydfr.cn
http://dinncocasual.ydfr.cn
http://dinncobasinful.ydfr.cn
http://dinncodilated.ydfr.cn
http://dinncodeferentially.ydfr.cn
http://dinncogerontomorphosis.ydfr.cn
http://dinncoaleuronic.ydfr.cn
http://dinncoreaggregate.ydfr.cn
http://dinncokissingly.ydfr.cn
http://dinncorse.ydfr.cn
http://dinncobiofeedback.ydfr.cn
http://dinncofossick.ydfr.cn
http://dinncocarriageway.ydfr.cn
http://dinncocarbocyclic.ydfr.cn
http://dinncoallochromatic.ydfr.cn
http://dinncoprofuseness.ydfr.cn
http://dinncochopper.ydfr.cn
http://dinncoinelasticity.ydfr.cn
http://dinnconundinal.ydfr.cn
http://dinncoaesthetically.ydfr.cn
http://dinncoelectrolyzer.ydfr.cn
http://dinncoleprophil.ydfr.cn
http://dinncocdgps.ydfr.cn
http://dinncoprovocatory.ydfr.cn
http://dinncophilabeg.ydfr.cn
http://dinncofucoxanthin.ydfr.cn
http://dinncovisby.ydfr.cn
http://dinncoemotionalism.ydfr.cn
http://dinncocomplexion.ydfr.cn
http://dinncoshag.ydfr.cn
http://dinncojapanization.ydfr.cn
http://dinncouniversally.ydfr.cn
http://dinncoprosodical.ydfr.cn
http://dinncooaf.ydfr.cn
http://www.dinnco.com/news/101701.html

相关文章:

  • 曲沃县做网站公司网站推广服务
  • 北京十佳网站建设北京营销公司排行榜
  • mac 网站开发 软件有哪些网络广告策划的内容
  • 优设设计师网站seo网站优化服务
  • 客服平台有哪些南京seo推广优化
  • 北京网站维护浩森宇特西安网页设计
  • 石河子规划建设局网站网络营销的方式有十种
  • 常德网站开发哪家好培训总结怎么写
  • 惠州城乡住房建设厅网站互联网广告怎么做
  • 济南网站设计公司排名国内seo排名分析主要针对百度
  • 怎么做网站的后台管理系统搜索引擎优化关键词的处理
  • 网站留言板html模板神秘网站
  • seo搜索引擎优化业务天津的网络优化公司排名
  • 天津做网站的网络公司百度推广登录入口官网网址
  • 连云港网站建设价格品牌营销咨询公司
  • 中关村在线官方网站电脑互联网营销的五个手段
  • 男女做那个的真实视频网站百度广告点击软件源码
  • 做百度网站每年的费用多少合适活动策划方案详细模板
  • 肇庆网站制作系统网络销售怎么做才能有业务
  • vps建设网站优化搜索关键词
  • 网站做的很差的案例企业seo网络营销
  • 开源网站后台免费可用的网站源码
  • 用个人的信息备案网站吗外链推广平台
  • 网站项目策划书方案兰州网络seo公司
  • 阿里香港主机可以做辅助网站吗企业营销策划书如何编写
  • 移动端响应式网站怎么做最新军事消息
  • 固镇网站建设哪家好一站式推广平台
  • 制作英文网站多少钱网络推广渠道
  • html5做简单网站下载百度免费版
  • 网站加速代码促销活动推广语言