P3R5T7U9 / Generated-WenXinworkshop-Starter

gem大开发的文心一言&文心千帆大模型spring-boot-starter,支持ErnieBot、ERNIE-Bot-turbo、ChatGLM、Ernie-Bot-VilGC等20+模型,响应式风格,内置对话记忆,支持流式返回、图片生成;此fork库仅作为备份

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

中文  |  EN

gear-wenxinworkshop-starter

Spring Boot JDK Maven

LICENSE COMMIT LANG

# Gear-WenXinWorkShop-Starter

在线体验:文心千帆

获取access-token方法

image 可直接查看下面文章:

申请文心一言&文心千帆大模型API资格、获取access_token,并使用SpringBoot接入文心一言API


  1. 前往 文心一言资格申请

  2. 填写问卷,等待审核通过(我用了一天半)

  3. 审核通过后进入 控制台,点击创建应用

  4. 进入左侧 应用列表,复制 API KeySecret Key

  5. 将你的 API KeySecret Key 替换链接的[Key],访问以下地址

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=[API-Key]&client_secret=[Secret-Key]

项目简介

  • 百度 “文心千帆 WENXINWORKSHOP” 大模型的spring-boot-starter,可以帮助您快速接入百度的AI能力,只需一行代码即可调用百度文心千帆大模型。
  • 完整对接文心千帆的官方API文档。
  • 支持根据提示词生成图片。
  • 支持对话的流式返回。
  • 完整支持文心千帆官网所有模型API,包括 文心一言 ErnieBotERNIE-Bot-turboBLOOMZ-7BErnie-Bot-VilGVisualGLM-6BLlama-2Linly-Chinese-LLaMA-2-7BLinly-Chinese-LLaMA-2-13BChatGLM2-6BRWKV-4-WorldOpenLLaMA-7BFalcon-7BDolly-12BMPT-7B-InstructStable-Diffusion-v1.5RWKV-4-pile-14BRWKV-5-WorldRWKV-Raven-14BFalcon-40BMPT-30B-instructFlan-UL2Cerebras-GPT-13BCerebras-GPT-6.7BPythia-12BPythia-6.9BGPT-J-6BGPT-NeoX-20BOA-Pythia-12B-SFT-4GPT4All-JStableLM-Alpha-7BStarCoderPrompt模板模型的API(单轮对话、连续对话、流式返回、图片生成)。
  • 后续将增加更多模型的支持。

快速开始

使用demo

此版本近乎重构整个项目,客户端与参数类的路径有变化,与之前版本的存在一定的不兼容情况,方法未改变,重新导包即可。

"Bloomz7BClient" -> "BloomZ7BClient"

除"ErnieBot"与"Prompt"外,其余的对话型模型接收参数类统一为 ChatBaseRequest,响应类为 ChatResponse
图片生成型模型接收参数类统一为 ChatImageRequest,响应类为 ImageBaseRequest,内容为base64编码的图片。

1、添加依赖

Repository Path: [/io/github/gemingjia/gear-wenxinworkshop-starter)

  • Maven
<dependency>
  <groupId>io.github.gemingjia</groupId>
  <artifactId>gear-wenxinworkshop-starter</artifactId>
  <version>0.0.7.2</version>
</dependency>
  • Gradle
dependencies {
  implementation 'io.github.gemingjia:gear-wenxinworkshop-starter:0.0.7.2' 
}

2、添加access-token

  • application.yml & application.yaml
    gear:
      wenxin:
        access-token: xx.xxxxxxxxxx.xxxxxx.xxxxxxx.xxxxx-xxxx
  • application.properties
    gear.wenxin.access-token=xx.xxxxxxxxxx.xxxxxx.xxxxxxx.xxxxx-xxxx

3、调用示例

@RestController
public class ChatController {

  // 要调用的模型的客户端
  @Resource
  private ErnieBotClient ernieBotClient;

  // 单次对话
  @PostMapping("/chat")
  public Mono<ChatResponse> chatSingle(String msg) {
    return ernieBotClient.chatSingle(msg);
  }

  // 连续对话
  @PostMapping("/chats")
  public Mono<ChatResponse> chatCont(String msg) {
    String chatUID = "test-user-1001";
    return ernieBotClient.chatCont(msg, chatUID);
  }

  // 流式返回,单次对话
  @PostMapping(value = "/stream/chat", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
  public Flux<ChatResponse> chatSingleStream(String msg) {
    return ernieBotClient.chatSingleOfStream(msg);
  }

  // 流式返回,连续对话
  @PostMapping(value = "/stream/chats", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
  public Flux<ChatResponse> chatContStream(String msg, String msgUid) {
    return ernieBotClient.chatContOfStream(msg, msgUid);
  }

  // 模板对话
  @PostMapping("/prompt")
  public Mono<PromptResponse> chatSingle() {
    Map<String, String> map = new HashMap<>();
    map.put("article", "我看见过波澜壮阔的大海,玩赏过水平如镜的西湖,却从没看见过漓江这样的水。漓江的水真静啊,静得让你感觉不到它在流动。");
    map.put("number", "20");
    PromptRequest promptRequest = new PromptRequest();
    promptRequest.setId(1234);
    promptRequest.setParamMap(map);
    
    return promptBotClient.chatPrompt(promptRequest);
  }

}

Star History

Star History Chart

更新日志

v0.0.7

全面转向webflux响应式风格,请注意适配返回值

  • 重构 完全适配webflux响应式风格,去除代码中的阻塞操作。
  • 优化 接口命名
  • 优化 空值检测
  • 优化 日志输出的规范性
  • 优化 不同模型的URL配置名称(无感知)
  • 新增 配置API-Key 和 Secret-Key自动获取access-Token,每次启动自动获取
  • 新增 9+模型的API支持

v0.0.6

!此版本与之前版本客户端路径不兼容,请重新导包

  • 重构 客户端的实现方式,大幅增加了拓展性
  • 修复 URL错乱问题
  • 优化 导入/导出历史消息记录方法
  • 新增 access-token的设置方法,优先级 setCustomAccessToken > extend and override > application.yaml
  • 新增 支持图片生成
  • 新增 通用客户端CommonClient,新模型未适配时可使用这个,大概率可用
  • 新增 高度自定义设计,直接extends DefaltParamsClient并重写方法即可
  • 新增 大量模型适配,支持文心千帆所有模型,包括:文心一言 ErnieBot、ERNIE-Bot-turbo、BLOOMZ-7B、Ernie-Bot-VilG、VisualGLM-6B、Llama-2、Linly-Chinese-LLaMA-2-7B、Linly-Chinese-LLaMA-2-13B、ChatGLM2-6B、RWKV-4-World、OpenLLaMA-7B、Falcon-7B、Dolly-12B、MPT-7B-Instruct、Stable-Diffusion-v1.5、RWKV-4-pile-14B、RWKV-5-World、RWKV-Raven-14B、Falcon-40B、MPT-30B-instruct、Flan-UL2、Cerebras-GPT-13B、Cerebras-GPT-6.7B、Pythia-12B、Pythia-6.9B、GPT-J-6B、GPT-NeoX-20B、OA-Pythia-12B-SFT-4、GPT4All-J、StableLM-Alpha-7B 、 StarCoder、Prompt模板。

使用文档

点击跳转 => 使用文档

开源协议

LICENSE

About

gem大开发的文心一言&文心千帆大模型spring-boot-starter,支持ErnieBot、ERNIE-Bot-turbo、ChatGLM、Ernie-Bot-VilGC等20+模型,响应式风格,内置对话记忆,支持流式返回、图片生成;此fork库仅作为备份

License:Apache License 2.0


Languages

Language:Java 100.0%