SpringBoot怎么整合chatGPT

其他教程   发布日期:2023年11月04日   浏览次数:399

这篇文章主要介绍了SpringBoot怎么整合chatGPT的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot怎么整合chatGPT文章都会有所收获,下面我们一起来看看吧。

    1 添加依赖

    1. <!-- 导入openai依赖 -->
    2. <dependency>
    3. <groupId>com.theokanning.openai-gpt3-java</groupId>
    4. <artifactId>client</artifactId>
    5. <version>0.8.1</version>
    6. </dependency>

    2 创建相关文件

    2.1 实体类:OpenAi.java

    1. package com.wkf.workrecord.tools.openai;
    2. import lombok.AllArgsConstructor;
    3. import lombok.Data;
    4. import lombok.NoArgsConstructor;
    5. /**
    6. * @author wuKeFan
    7. * @date 2023-02-10 15:40:22
    8. */
    9. @Data
    10. @NoArgsConstructor
    11. @AllArgsConstructor
    12. public class OpenAi {
    13. String id;
    14. String name;
    15. String desc;
    16. String model;
    17. // 提示模板
    18. String prompt;
    19. // 创新采样
    20. Double temperature;
    21. // 情绪采样
    22. Double topP;
    23. // 结果条数
    24. Double n = 1d;
    25. // 频率处罚系数
    26. Double frequencyPenalty;
    27. // 重复处罚系数
    28. Double presencePenalty;
    29. // 停用词
    30. String stop;
    31. }

    2.2 配置类:OpenAiProperties.java

    1. package com.wkf.workrecord.tools.openai;
    2. import lombok.Data;
    3. import org.springframework.beans.factory.InitializingBean;
    4. import org.springframework.boot.context.properties.ConfigurationProperties;
    5. /**
    6. * @author wuKeFan
    7. * @date 2023-02-10 15:25:32
    8. */
    9. @Data
    10. @ConfigurationProperties(prefix = "openai")
    11. public class OpenAiProperties implements InitializingBean {
    12. // 秘钥
    13. String token;
    14. // 超时时间
    15. Integer timeout;
    16. // 设置属性时同时设置给OpenAiUtils
    17. @Override
    18. public void afterPropertiesSet() throws Exception {
    19. OpenAiUtils.OPENAPI_TOKEN = token;
    20. OpenAiUtils.TIMEOUT = timeout;
    21. }
    22. }

    2.3 核心业务逻辑OpenAiUtils.java

    1. package com.wkf.workrecord.tools.openai;
    2. import com.theokanning.openai.OpenAiService;
    3. import com.theokanning.openai.completion.CompletionChoice;
    4. import com.theokanning.openai.completion.CompletionRequest;
    5. import org.springframework.util.StringUtils;
    6. import java.util.*;
    7. /**
    8. * @author wuKeFan
    9. * @date 2023-02-10 15:32:18
    10. */
    11. public class OpenAiUtils {
    12. public static final Map<String, OpenAi> PARMS = new HashMap<>();
    13. static {
    14. PARMS.put("OpenAi01", new OpenAi("OpenAi01", "问&答", "依据现有知识库问&答", "text-davinci-003", "Q: %s
    15. A:", 0.0, 1.0, 1.0, 0.0, 0.0, "
    16. "));
    17. PARMS.put("OpenAi02", new OpenAi("OpenAi02", "语法纠正", "将句子转换成标准的英语,输出结果始终是英文", "text-davinci-003", "%s", 0.0, 1.0, 1.0, 0.0, 0.0, ""));
    18. PARMS.put("OpenAi03", new OpenAi("OpenAi03", "内容概况", "将一段话,概况中心", "text-davinci-003", "Summarize this for a second-grade student:
    19. %s", 0.7, 1.0, 1.0, 0.0, 0.0, ""));
    20. PARMS.put("OpenAi04", new OpenAi("OpenAi04", "生成OpenAi的代码", "一句话生成OpenAi的代码", "code-davinci-002", """"
    21. Util exposes the following:
    22. util.openai() -> authenticates & returns the openai module, which has the following functions:
    23. openai.Completion.create(
    24. prompt="<my prompt>", # The prompt to start completing from
    25. max_tokens=123, # The max number of tokens to generate
    26. temperature=1.0 # A measure of randomness
    27. echo=True, # Whether to return the prompt in addition to the generated completion
    28. )
    29. """
    30. import util
    31. """
    32. %s
    33. """
    34. ", 0.0, 1.0, 1.0, 0.0, 0.0, """""));
    35. PARMS.put("OpenAi05", new OpenAi("OpenAi05", "程序命令生成", "一句话生成程序的命令,目前支持操作系统指令比较多", "text-davinci-003", "Convert this text to a programmatic command:
    36. Example: Ask Constance if we need some bread
    37. Output: send-msg `find constance` Do we need some bread?
    38. %s", 0.0, 1.0, 1.0, 0.2, 0.0, ""));
    39. PARMS.put("OpenAi06", new OpenAi("OpenAi06", "语言翻译", "把一种语法翻译成其它几种语言", "text-davinci-003", "Translate this into %s:
    40. %s", 0.3, 1.0, 1.0, 0.0, 0.0, ""));
    41. PARMS.put("OpenAi07", new OpenAi("OpenAi07", "Stripe国际API生成", "一句话生成Stripe国际支付API", "code-davinci-002", """"
    42. Util exposes the following:
    43. util.stripe() -> authenticates & returns the stripe module; usable as stripe.Charge.create etc
    44. """
    45. import util
    46. """
    47. %s
    48. """", 0.0, 1.0, 1.0, 0.0, 0.0, """""));
    49. PARMS.put("OpenAi08", new OpenAi("OpenAi08", "SQL语句生成", "依据上下文中的表信息,生成SQL语句", "code-davinci-002", "### %s SQL tables, 表字段信息如下:
    50. %s
    51. #
    52. ### %s
    53. %s", 0.0, 1.0, 1.0, 0.0, 0.0, "# ;"));
    54. PARMS.put("OpenAi09", new OpenAi("OpenAi09", "结构化生成", "对于非结构化的数据抽取其中的特征生成结构化的表格", "text-davinci-003", "A table summarizing, use Chinese:
    55. %s
    56. ", 0.0, 1.0, 1.0, 0.0, 0.0, ""));
    57. PARMS.put("OpenAi10", new OpenAi("OpenAi10", "信息分类", "把一段信息继续分类", "text-davinci-003", "%s
    58. 分类:", 0.0, 1.0, 1.0, 0.0, 0.0, ""));
    59. PARMS.put("OpenAi11", new OpenAi("OpenAi11", "Python代码解释", "把代码翻译成文字,用来解释程序的作用", "code-davinci-002", "# %s
    60. %s
    61. # 解释代码作用
    62. #", 0.0, 1.0, 1.0, 0.0, 0.0, ""));
    63. PARMS.put("OpenAi12", new OpenAi("OpenAi12", "文字转表情符号", "将文本编码成表情服务", "text-davinci-003", "转换文字为表情。
    64. %s:", 0.8, 1.0, 1.0, 0.0, 0.0, "
    65. "));
    66. PARMS.put("OpenAi13", new OpenAi("OpenAi13", "时间复杂度计算", "求一段代码的时间复杂度", "text-davinci-003", "%s
    67. """
    68. 函数的时间复杂度是", 0.0, 1.0, 1.0, 0.0, 0.0, "
    69. "));
    70. PARMS.put("OpenAi14", new OpenAi("OpenAi14", "程序代码翻译", "把一种语言的代码翻译成另外一种语言的代码", "code-davinci-002", "##### 把这段代码从%s翻译成%s
    71. ### %s
    72. %s
    73. ### %s", 0.0, 1.0, 1.0, 0.0, 0.0, "###"));
    74. PARMS.put("OpenAi15", new OpenAi("OpenAi15", "高级情绪评分", "支持批量列表的方式检查情绪", "text-davinci-003", "对下面内容进行情感分类:
    75. %s"
    76. 情绪评级:", 0.0, 1.0, 1.0, 0.0, 0.0, ""));
    77. PARMS.put("OpenAi16", new OpenAi("OpenAi16", "代码解释", "对一段代码进行解释", "code-davinci-002", "代码:
    78. %s
    79. """
    80. 上面的代码在做什么:
    81. 1. ", 0.0, 1.0, 1.0, 0.0, 0.0, """""));
    82. PARMS.put("OpenAi17", new OpenAi("OpenAi17", "关键字提取", "提取一段文本中的关键字", "text-davinci-003", "抽取下面内容的关键字:
    83. %s", 0.5, 1.0, 1.0, 0.8, 0.0, ""));
    84. PARMS.put("OpenAi18", new OpenAi("OpenAi18", "问题解答", "类似解答题", "text-davinci-003", "Q: %s
    85. A: ?", 0.0, 1.0, 1.0, 0.0, 0.0, ""));
    86. PARMS.put("OpenAi19", new OpenAi("OpenAi19", "广告设计", "给一个产品设计一个广告", "text-davinci-003", "为下面的产品创作一个创业广告,用于投放到抖音上:
    87. 产品:%s.", 0.5, 1.0, 1.0, 0.0, 0.0, ""));
    88. PARMS.put("OpenAi20", new OpenAi("OpenAi20", "产品取名", "依据产品描述和种子词语,给一个产品取一个好听的名字", "text-davinci-003", "产品描述: %s.
    89. 种子词: %s.
    90. 产品名称: ", 0.8, 1.0, 1.0, 0.0, 0.0, ""));
    91. PARMS.put("OpenAi21", new OpenAi("OpenAi21", "句子简化", "把一个长句子简化成一个短句子", "text-davinci-003", "%s
    92. Tl;dr: ", 0.7, 1.0, 1.0, 0.0, 1.0, ""));
    93. PARMS.put("OpenAi22", new OpenAi("OpenAi22", "修复代码Bug", "自动修改代码中的bug", "code-davinci-002", "##### 修复下面代码的bug
    94. ### %s
    95. %s
    96. ### %s
    97. ", 0.0, 1.0, 1.0, 0.0, 0.0, "###"));
    98. PARMS.put("OpenAi23", new OpenAi("OpenAi23", "表格填充数据", "自动为一个表格生成数据", "text-davinci-003", "spreadsheet ,%s rows:
    99. %s
    100. ", 0.5, 1.0, 1.0, 0.0, 0.0, ""));
    101. PARMS.put("OpenAi24", new OpenAi("OpenAi24", "语言聊天机器人", "各种开发语言的两天机器人", "code-davinci-002", "You: %s
    102. %s机器人:", 0.0, 1.0, 1.0, 0.5, 0.0, "You: "));
    103. PARMS.put("OpenAi25", new OpenAi("OpenAi25", "机器学习机器人", "机器学习模型方面的机器人", "text-davinci-003", "You: %s
    104. ML机器人:", 0.3, 1.0, 1.0, 0.5, 0.0, "You: "));
    105. PARMS.put("OpenAi26", new OpenAi("OpenAi26", "清单制作", "可以列出各方面的分类列表,比如歌单", "text-davinci-003", "列出10%s:", 0.5, 1.0, 1.0, 0.52, 0.5, "11.0"));
    106. PARMS.put("OpenAi27", new OpenAi("OpenAi27", "文本情绪分析", "对一段文字进行情绪分析", "text-davinci-003", "推断下面文本的情绪是积极的, 中立的, 还是消极的.
    107. 文本: "%s"
    108. 观点:", 0.0, 1.0, 1.0, 0.5, 0.0, ""));
    109. PARMS.put("OpenAi28", new OpenAi("OpenAi28", "航空代码抽取", "抽取文本中的航空diam信息", "text-davinci-003", "抽取下面文本中的航空代码:
    110. 文本:"%s"
    111. 航空代码:", 0.0, 1.0, 1.0, 0.0, 0.0, "
    112. "));
    113. PARMS.put("OpenAi29", new OpenAi("OpenAi29", "生成SQL语句", "无上下文,语句描述生成SQL", "text-davinci-003", "%s", 0.3, 1.0, 1.0, 0.0, 0.0, ""));
    114. PARMS.put("OpenAi30", new OpenAi("OpenAi30", "抽取联系信息", "从文本中抽取联系方式", "text-davinci-003", "从下面文本中抽取%s:
    115. %s", 0.0, 1.0, 1.0, 0.0, 0.0, ""));
    116. PARMS.put("OpenAi31", new OpenAi("OpenAi31", "程序语言转换", "把一种语言转成另外一种语言", "code-davinci-002", "#%s to %s:
    117. %s:%s
    118. %s:", 0.0, 1.0, 1.0, 0.0, 0.0, ""));
    119. PARMS.put("OpenAi32", new OpenAi("OpenAi32", "好友聊天", "模仿好友聊天", "text-davinci-003", "You: %s
    120. 好友:", 0.5, 1.0, 1.0, 0.5, 0.0, "You:"));
    121. PARMS.put("OpenAi33", new OpenAi("OpenAi33", "颜色生成", "依据描述生成对应颜色", "text-davinci-003", "%s:
    122. background-color: ", 0.0, 1.0, 1.0, 0.0, 0.0, ";"));
    123. PARMS.put("OpenAi34", new OpenAi("OpenAi34", "程序文档生成", "自动为程序生成文档", "code-davinci-002", "# %s
    124. %s
    125. # 上述代码的详细、高质量文档字符串:
    126. """", 0.0, 1.0, 1.0, 0.0, 0.0, "#""""));
    127. PARMS.put("OpenAi35", new OpenAi("OpenAi35", "段落创作", "依据短语生成相关文短", "text-davinci-003", "为下面短语创建一个中文段:
    128. %s:
    129. ", 0.5, 1.0, 1.0, 0.0, 0.0, ""));
    130. PARMS.put("OpenAi36", new OpenAi("OpenAi36", "代码压缩", "把多行代码简单的压缩成一行", "code-davinci-002", "将下面%s代码转成一行:
    131. %s
    132. %s一行版本:", 0.0, 1.0, 1.0, 0.0, 0.0, ";"));
    133. PARMS.put("OpenAi37", new OpenAi("OpenAi37", "故事创作", "依据一个主题创建一个故事", "text-davinci-003", "主题: %s
    134. 故事创作:", 0.8, 1.0, 1.0, 0.5, 0.0, ""));
    135. PARMS.put("OpenAi38", new OpenAi("OpenAi38", "人称转换", "第一人称转第3人称", "text-davinci-003", "把下面内容从第一人称转为第三人称 (性别女):
    136. %s
    137. ", 0.0, 1.0, 1.0, 0.0, 0.0, ""));
    138. PARMS.put("OpenAi39", new OpenAi("OpenAi39", "摘要说明", "依据笔记生成摘要说明", "text-davinci-003", "将下面内容转换成将下%s摘要:
    139. %s", 0.0, 1.0, 1.0, 0.0, 0.0, ""));
    140. PARMS.put("OpenAi40", new OpenAi("OpenAi40", "头脑风暴", "给定一个主题,让其生成一些主题相关的想法", "text-davinci-003", "头脑风暴一些关于%s的想法:", 0.6, 1.0, 1.0, 1.0, 1.0, ""));
    141. PARMS.put("OpenAi41", new OpenAi("OpenAi41", "ESRB文本分类", "按照ESRB进行文本分类", "text-davinci-003", "Provide an ESRB rating for the following text:
    142. "%s"
    143. ESRB rating:", 0.3, 1.0, 1.0, 0.0, 0.0, "
    144. "));
    145. PARMS.put("OpenAi42", new OpenAi("OpenAi42", "提纲生成", "按照提示为相关内容生成提纲", "text-davinci-003", "为%s提纲:", 0.3, 1.0, 1.0, 0.0, 0.0, ""));
    146. PARMS.put("OpenAi43", new OpenAi("OpenAi43", "美食制作(后果自负)", "依据美食名称和材料生成美食的制作步骤", "text-davinci-003", "依据下面成分和美食,生成制作方法:
    147. %s
    148. 成分:
    149. %s
    150. 制作方法:", 0.3, 1.0, 1.0, 0.0, 0.0, ""));
    151. PARMS.put("OpenAi44", new OpenAi("OpenAi44", "AI聊天", "与AI机器进行聊天", "text-davinci-003", "Human: %s", 0.9, 1.0, 1.0, 0.0, 0.6, "Human:AI:"));
    152. PARMS.put("OpenAi45", new OpenAi("OpenAi45", "摆烂聊天", "与讽刺机器进行聊天", "text-davinci-003", "Marv不情愿的回答问题.
    153. You:%s
    154. Marv:", 0.5, 0.3, 1.0, 0.5, 0.0, ""));
    155. PARMS.put("OpenAi46", new OpenAi("OpenAi46", "分解步骤", "把一段文本分解成几步来完成", "text-davinci-003", "为下面文本生成次序列表,并增加列表数子:
    156. %s
    157. ", 0.3, 1.0, 1.0, 0.0, 0.0, ""));
    158. PARMS.put("OpenAi47", new OpenAi("OpenAi47", "点评生成", "依据文本内容自动生成点评", "text-davinci-003", "依据下面内容,进行点评:
    159. %s
    160. 点评:", 0.5, 1.0, 1.0, 0.0, 0.0, ""));
    161. PARMS.put("OpenAi48", new OpenAi("OpenAi48", "知识学习", "可以为学习知识自动解答", "text-davinci-003", "%s", 0.3, 1.0, 1.0, 0.0, 0.0, ""));
    162. PARMS.put("OpenAi49", new OpenAi("OpenAi49", "面试", "生成面试题", "text-davinci-003", "创建10道%s相关的面试题(中文):
    163. ", 0.5, 1.0, 10.0, 0.0, 0.0, ""));
    164. }
    165. public static String OPENAPI_TOKEN = "";
    166. public static Integer TIMEOUT = null;
    167. /**
    168. * 获取ai
    169. *
    170. * @param openAi
    171. * @param prompt
    172. * @return
    173. */
    174. public static List<CompletionChoice> getAiResult(OpenAi openAi, String prompt) {
    175. if (TIMEOUT == null || TIMEOUT < 1000) {
    176. TIMEOUT = 3000;
    177. }
    178. OpenAiService service = new OpenAiService(OPENAPI_TOKEN, TIMEOUT);
    179. CompletionRequest.CompletionRequestBuilder builder = CompletionRequest.builder()
    180. .model(openAi.getModel())
    181. .prompt(prompt)
    182. .temperature(openAi.getTemperature())
    183. .maxTokens(1000)
    184. .topP(openAi.getTopP())
    185. .frequencyPenalty(openAi.getFrequencyPenalty())
    186. .presencePenalty(openAi.getPresencePenalty());
    187. if (!StringUtils.isEmpty(openAi.getStop())) {
    188. builder.stop(Arrays.asList(openAi.getStop().split(",")));
    189. }
    190. CompletionRequest completionRequest = builder.build();
    191. return service.createCompletion(completionRequest).getChoices();
    192. }
    193. /**
    194. * 问答
    195. *
    196. * @param question
    197. * @return
    198. */
    199. public static List<CompletionChoice> getQuestionAnswer(String question) {
    200. OpenAi openAi = PARMS.get("OpenAi01");
    201. return getAiResult(openAi, String.format(openAi.getPrompt(), question));
    202. }
    203. /**
    204. * 语法纠错
    205. *
    206. * @param text
    207. * @return
    208. */
    209. public static List<CompletionChoice> getGrammarCorrection(String text) {
    210. OpenAi openAi = PARMS.get("OpenAi02");
    211. return getAiResult(openAi, String.format(openAi.getPrompt(), text));
    212. }
    213. /**
    214. * 将一段话,概况中心
    215. *
    216. * @param text
    217. * @return
    218. */
    219. public static List<CompletionChoice> getSummarize(String text) {
    220. OpenAi openAi = PARMS.get("OpenAi03");
    221. return getAiResult(openAi, String.format(openAi.getPrompt(), text));
    222. }
    223. /**
    224. * 一句话生成OpenAi的代码
    225. *
    226. * @param text
    227. * @return
    228. */
    229. public static List<CompletionChoice> getOpenAiApi(String text) {
    230. OpenAi openAi = PARMS.get("OpenAi04");
    231. return getAiResult(openAi, String.format(openAi.getPrompt(), text));
    232. }
    233. /**
    234. * 一句话生成程序的命令,目前支持操作系统指令比较多
    235. *
    236. * @param text
    237. * @return
    238. */
    239. public static List<CompletionChoice> getTextToCommand(String text) {
    240. OpenAi openAi = PARMS.get("OpenAi05");
    241. return getAiResult(openAi, String.format(openAi.getPrompt(), text));
    242. }
    243. /**
    244. * 把一种语法翻译成其它几种语言
    245. *
    246. * @param text
    247. * @return
    248. */
    249. public static List<CompletionChoice> getTranslatesLanguages(String text, String translatesLanguages) {
    250. if (StringUtils.isEmpty(translatesLanguages)) {
    251. translatesLanguages = " 1. French, 2. Spanish and 3. English";
    252. }
    253. OpenAi openAi = PARMS.get("OpenAi06");
    254. return getAiResult(openAi, String.format(openAi.getPrompt(), translatesLanguages, text));
    255. }
    256. /**
    257. * 一句话生成Stripe国际支付API
    258. *
    259. * @param text
    260. * @return
    261. */
    262. public static List<CompletionChoice> getStripeApi(String text) {
    263. OpenAi openAi = PARMS.get("OpenAi07");
    264. return getAiResult(openAi, String.format(openAi.getPrompt(), text));
    265. }
    266. /**
    267. * 依据上下文中的表信息,生成SQL语句
    268. *
    269. * @param databaseType 数据库类型
    270. * @param tables 上午依赖的表和字段 Employee(id, name, department_id)
    271. * @param text SQL描述
    272. * @param sqlType sql类型,比如SELECT
    273. * @return
    274. */
    275. public static List<CompletionChoice> getStripeApi(String databaseType, List<String> tables, String text, String sqlType) {
    276. OpenAi openAi = PARMS.get("OpenAi08");
    277. StringJoiner joiner = new StringJoiner("
    278. ");
    279. for (int i = 0; i < tables.size(); i++) {
    280. joiner.add("# " + tables);
    281. }
    282. return getAiResult(openAi, String.format(openAi.getPrompt(), databaseType, joiner.toString(), text, sqlType));
    283. }
    284. /**
    285. * 对于非结构化的数据抽取其中的特征生成结构化的表格
    286. *
    287. * @param text 非结构化的数据
    288. * @return
    289. */
    290. public static List<CompletionChoice> getUnstructuredData(String text) {
    291. OpenAi openAi = PARMS.get("OpenAi09");
    292. return getAiResult(openAi, String.format(openAi.getPrompt(), text));
    293. }
    294. /**
    295. * 把一段信息继续分类
    296. *
    297. * @param text 要分类的文本
    298. * @return
    299. */
    300. public static List<CompletionChoice> getTextCategory(String text) {
    301. OpenAi openAi = PARMS.get("OpenAi10");
    302. return getAiResult(openAi, String.format(openAi.getPrompt(), text));
    303. }
    304. /**
    305. * 把一段信息继续分类
    306. *
    307. * @param codeType 代码类型,比如Python
    308. * @param code 要解释的代码
    309. * @return
    310. */
    311. public static List<CompletionChoice> getCodeExplain(String codeType, String code) {
    312. OpenAi openAi = PARMS.get("OpenAi11");
    313. return getAiResult(openAi, String.format(openAi.getPrompt(), codeType, code));
    314. }
    315. /**
    316. * 将文本编码成表情服务
    317. *
    318. * @param text 文本
    319. * @return
    320. */
    321. public static List<CompletionChoice> getTextEmoji(String text) {
    322. OpenAi openAi = PARMS.get("OpenAi12");
    323. return getAiResult(openAi, String.format(openAi.getPrompt(), text));
    324. }
    325. /**
    326. * 求一段代码的时间复杂度
    327. *
    328. * @param code 代码
    329. * @return
    330. */
    331. public static List<CompletionChoice> getTimeComplexity(String code) {
    332. OpenAi openAi = PARMS.get("OpenAi13");
    333. return getAiResult(openAi, String.format(openAi.getPrompt(), code));
    334. }
    335. /**
    336. * 把一种语言的代码翻译成另外一种语言的代码
    337. *
    338. * @param fromLanguage 要翻译的代码语言
    339. * @param toLanguage 要翻译成的代码语言
    340. * @param code 代码
    341. * @return
    342. */
    343. public static List<CompletionChoice> getTranslateProgramming(String fromLanguage, String toLanguage, String code) {
    344. OpenAi openAi = PARMS.get("OpenAi14");
    345. return getAiResult(openAi, String.format(openAi.getPrompt(), fromLanguage, toLanguage, fromLanguage, code, toLanguage));
    346. }
    347. /**
    348. * 支持批量列表的方式检查情绪
    349. *
    350. * @param texts 文本
    351. * @return
    352. */
    353. public static List<CompletionChoice> getBatchTweetClassifier(List<String> texts) {
    354. OpenAi openAi = PARMS.get("OpenAi15");
    355. StringJoiner stringJoiner = new StringJoiner("
    356. ");
    357. for (int i = 0; i < texts.size(); i++) {
    358. stringJoiner.add((i + 1) + ". " + texts.get(i));
    359. }
    360. return getAiResult(openAi, String.format(openAi.getPrompt(), stringJoiner.toString()));
    361. }
    362. /**
    363. * 对一段代码进行解释
    364. *
    365. * @param code 文本
    366. * @return
    367. */
    368. public static List<CompletionChoice> getExplainCOde(String code) {
    369. OpenAi openAi = PARMS.get("OpenAi16");
    370. return getAiResult(openAi, String.format(openAi.getPrompt(), code));
    371. }
    372. /**
    373. * 提取一段文本中的关键字
    374. *
    375. * @param text 文本
    376. * @return
    377. */
    378. public static List<CompletionChoice> getTextKeywords(String text) {
    379. OpenAi openAi = PARMS.get("OpenAi17");
    380. return getAiResult(openAi, String.format(openAi.getPrompt(), text));
    381. }
    382. /**
    383. * 事实回答答题
    384. *
    385. * @param text 文本
    386. * @return
    387. */
    388. public static List<CompletionChoice> getFactualAnswering(String text) {
    389. OpenAi openAi = PARMS.get("OpenAi18");
    390. return getAiResult(openAi, String.format(openAi.getPrompt(), text));
    391. }
    392. /**
    393. * 给一个产品设计一个广告
    394. *
    395. * @param text 文本
    396. * @return
    397. */
    398. public static List<CompletionChoice> getAd(String text) {
    399. OpenAi openAi = PARMS.get("OpenAi19");
    400. return getAiResult(openAi, String.format(openAi.getPrompt(), text));
    401. }
    402. /**
    403. * 依据产品描述和种子词语,给一个产品取一个好听的名字
    404. *
    405. * @param productDescription 产品描述
    406. * @param seedWords 种子词语
    407. * @return
    408. */
    409. public static List<CompletionChoice> getProductName(String productDescription, String seedWords) {
    410. OpenAi openAi = PARMS.get("OpenAi20");
    411. return getAiResult(openAi, String.format(openAi.getPrompt(), productDescription, seedWords));
    412. }
    413. /**
    414. * 把一个长句子简化成一个短句子
    415. *
    416. * @param text 长句子
    417. * @return
    418. */
    419. public static List<CompletionChoice> getProductName(String text) {
    420. OpenAi openAi = PARMS.get("OpenAi21");
    421. return getAiResult(openAi, String.format(openAi.getPrompt(), text));
    422. }
    423. /**
    424. * 自动修改代码中的bug
    425. *
    426. * @param codeType 语言类型
    427. * @param code 代码
    428. * @return
    429. */
    430. public static List<CompletionChoice> getBugFixer(String codeType, String code) {
    431. OpenAi openAi = PARMS.get("OpenAi22");
    432. return getAiResult(openAi, String.format(openAi.getPrompt(), codeType, code, codeType));
    433. }
    434. /**
    435. * 自动为一个表格生成数据
    436. *
    437. * @param rows 生成的行数
    438. * @param headers 数据表头,格式如:姓名| 年龄|性别|生日
    439. * @return
    440. */
    441. public static List<CompletionChoice> getFillData(int rows, String headers) {
    442. OpenAi openAi = PARMS.get("OpenAi23");
    443. return getAiResult(openAi, String.format(openAi.getPrompt(), rows, headers));
    444. }
    445. /**
    446. * 各种开发语言的两天机器人
    447. &amp

    以上就是SpringBoot怎么整合chatGPT的详细内容,更多关于SpringBoot怎么整合chatGPT的资料请关注九品源码其它相关文章!