|
@@ -1,90 +0,0 @@
|
|
|
-package com.tzld.piaoquan.longarticle.utils.other;
|
|
|
-
|
|
|
-import cn.hutool.core.convert.ConvertException;
|
|
|
-import cn.hutool.http.HttpException;
|
|
|
-import cn.hutool.http.HttpRequest;
|
|
|
-import com.alibaba.fastjson.JSONArray;
|
|
|
-import com.alibaba.fastjson.JSONObject;
|
|
|
-
|
|
|
-import java.util.*;
|
|
|
-
|
|
|
-public class GptAPI {
|
|
|
-
|
|
|
- /**
|
|
|
- * 聊天端点
|
|
|
- */
|
|
|
- static String chatEndpoint = "https://api.openai.com/v1/chat/completions";
|
|
|
- /**
|
|
|
- * api密匙
|
|
|
- */
|
|
|
- static String apiKey = "Bearer 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";
|
|
|
-
|
|
|
- /**
|
|
|
- * 发送消息
|
|
|
- *
|
|
|
- * @param txt 内容
|
|
|
- * @return {@link String}
|
|
|
- */
|
|
|
- public static String chat(String txt) {
|
|
|
- Map<String, Object> paramMap = new HashMap<>();
|
|
|
- paramMap.put("model", "gpt-3.5-turbo");
|
|
|
- List<Map<String, String>> dataList = new ArrayList<>();
|
|
|
- dataList.add(new HashMap<String, String>() {{
|
|
|
- put("role", "system");
|
|
|
- put("content", "你是一名优秀的中文工作者");
|
|
|
- }});
|
|
|
- dataList.add(new HashMap<String, String>() {{
|
|
|
- put("role", "user");
|
|
|
- put("content", txt);
|
|
|
- }});
|
|
|
- paramMap.put("messages", dataList);
|
|
|
- JSONObject message = null;
|
|
|
- try {
|
|
|
- String body = HttpRequest.post(chatEndpoint)
|
|
|
- .header("Authorization", apiKey)
|
|
|
- .header("Content-Type", "application/json")
|
|
|
- .body(JSONObject.toJSONString(paramMap))
|
|
|
- .execute()
|
|
|
- .body();
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(body);
|
|
|
- JSONArray choices = jsonObject.getJSONArray("choices");
|
|
|
- JSONObject result = choices.getJSONObject(0);
|
|
|
- message = result.getJSONObject("message");
|
|
|
- } catch (HttpException e) {
|
|
|
- return "出现了异常";
|
|
|
- }
|
|
|
- return message.getString("content");
|
|
|
- }
|
|
|
-
|
|
|
- public static String promptGenerate(String promptType) {
|
|
|
- if (Objects.equals(promptType, "title")) {
|
|
|
- return " 请将以上标题改写成适合小程序点击和传播的小程序标题,小程序标题的写作规范如下,请学习后进行小程序标题的编写。直接输出最终的小程序标题\n" +
|
|
|
- " 小程序标题写作规范:\n" +
|
|
|
- " 1.要点前置:将最重要的信息放在标题的最前面,以快速吸引读者的注意力。例如,“5月一辈子同学,三辈子亲,送给我的老同学,听哭无数人!”中的“5月”和“一辈子同学,三辈子亲”都是重要的信息点。\n" +
|
|
|
- " 2.激发情绪:使用能够触动人心的语言,激发读者的情感共鸣。如“只剩两人同学聚会,看后感动落泪。”使用“感动落泪”激发读者的同情和怀旧情绪。\n" +
|
|
|
- " 3.使用数字和特殊符号:数字可以提供具体性,而特殊符号如“\uD83D\uDD34”、“\uD83D\uDE04”、“\uD83D\uDD25”等可以吸引视觉注意力,增加点击率。\n" +
|
|
|
- " 4.悬念和好奇心:创建悬念或提出问题,激发读者的好奇心。例如,“太神奇了!长江水位下降,重庆出现惊奇一幕!”中的“惊奇一幕”就是一个悬念。\n" +
|
|
|
- " 5.名人效应:如果内容与知名人士相关,提及他们的名字可以增加标题的吸引力。\n" +
|
|
|
- " 6.社会价值观:触及读者的文化和社会价值观,如家庭、友情、国家荣誉等。\n" +
|
|
|
- " 7.标点符号的运用:使用感叹号、问号等标点来增强语气和情感表达。\n" +
|
|
|
- " 8.直接的语言:使用直白、口语化的语言,易于理解,如“狗屁股,笑死我了!”。\n" +
|
|
|
- " 9.热点人物或事件:提及当前的热点人物或事件,利用热点效应吸引读者。\n" +
|
|
|
- " 10.字数适中:保持标题在10-20个字之间,既不过长也不过短,确保信息的完整性和吸引力。\n" +
|
|
|
- " 11.适当的紧迫感:使用“最新”、“首次”、“紧急”等词汇,创造一种紧迫感,促使读者立即行动。\n" +
|
|
|
- " 12.情感或价值诉求:使用如“感动”、“泪目”、“经典”等词汇,直接与读者的情感或价值观产生共鸣。\n" +
|
|
|
- " 避免误导:确保标题准确反映内容,避免夸大或误导读者。";
|
|
|
-
|
|
|
- } else if (Objects.equals(promptType, "text")) {
|
|
|
- return "请从我给你的文章中挖掘出以下信息并且返回如下结果。\n" +
|
|
|
- " 你返回的结果是一个 json, 格式如下:\n" +
|
|
|
- " {\n" +
|
|
|
- " \"content_keys\": [] # 同时提供三个与文章内容高度相关的关键词,这些关键词将用于网络上搜索相关视频内容,\n" +
|
|
|
- " \"content_title\": 一个总结性的标题,该标题应简洁并能够反映文章的主要内容\n" +
|
|
|
- " }\n" +
|
|
|
- " 你需要处理的文本是:";
|
|
|
- } else {
|
|
|
- return "用中文帮我回答以下问题";
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-}
|