Home

Awesome

gpt-magic-plus

本项目基于gpt-magic,对部分业务进行了进一步的封装

使用方法

maven

<dependency>
  <groupId>io.github.whitemagic2014</groupId>
  <artifactId>gpt-magic-plus</artifactId>
  <version>version</version>
</dependency>

gradle

implementation group: 'io.github.whitemagic2014', name: 'gpt-magic-plus', version: 'version'

short
implementation 'io.github.whitemagic2014:gpt-magic-plus:version'

使用说明

密钥和代理设置

 设置gpt的代理和密钥
 System.setProperty("OPENAI_API_KEY", key);
 System.setProperty("OPENAI_API_SERVER", server);

根据功能区分几个功能模块

gmp包

gpt-magic-plus,一些基础的调用封装,详细的请看源码

  // 不同构造方法
  Gmp gmp = new Gmp();
  
  // 详见 ContextMemory 抽象类,默认提供基于内存的实现,可以自己写基于redis 或者数据库的
  ContextMemory contextMemory = new DefaultContextMemory(5)
  Gmp gmp = new Gmp(contextMemory);
  
  // 详见 indexSearcher,默认提供基于内存的实现
  IndexSearcher indexSearcher = new DefaultIndexSearcher();
  Gmp gmp = new Gmp(indexSearcher,contextMemory);
  
  // 按需设置参数
  gmp.setModel();
  gmp.setMaxTokens();
  ...
  
  几大功能 
  1 对话 
  // 最简单的 对话功能
  String chat(String session, String prompt);
  
  // 支持 图像输入 方法调用(function) 的对话 
  userMessage = ChatMessage.userMessageWithImageFilePath(String prompt, List<String> filePaths)
  String chat(String session, ChatMessage userMessage, String model, int maxTokens, List<GmpFunction> gmpFunction);
  
  2 作图
  // 简单作图
  String image(String prompt);
  
  // 根据 预设context + 用户prompt 整合 新的 prompt的作图
  OpenAiImage image(String prompt, String context, String style, int size);
  
  3 问答 事先将知识内容切片计算向量(file embedding),然后计算 问题 与 切片内容 的向量余弦相似度 搜索相关知识作为上下文问答
  QuestionAnswer answer(String session, String question, List<DataIndex> indices);
  QuestionAnswer answer(String session, String question, IndexSearcher indexSearcher);
  
  3补充 向量制作
  可以使用 gmp包下的 IndexCreator 将 pdf文件 或者 text文本 制作为 向量文件(xxx.gmpIndex)
  List<DataIndex> createIndexPdf(String pdfFilePath);
  List<DataIndex> createIndex(String context, String source);
  

gmpa包

gpt-magic-plus-assistant,便捷使用openai assistant,详细的请看源码

  // 不同构造方法
  GmpAssistant gmpa = new GmpAssistant("assistantId");
  // 详见 AssistantContext 抽象类,默认提供基于内存的实现,可以自己写基于redis 或者数据库的
  AssistantContext ac = new DefaultAssistantContext(); 
  GmpAssistant gmpa = new GmpAssistant("assistantId", GptModel.gpt_3p5_turbo, ac);

  
  // 创建对话 thread ,不指定 文件vectorstore,会使用实际对话的 assistant绑定的 文件vectorstore
  String threadId = gmpa.createThread(String session);
  // 创建对话 指定本次对话使用的 文件vectorstore
  String threadId = gmpa.createThread(String session, List<String> vectorStoreIds)

  // 使用 openai上创建的assistant
  String result = gmpa.chat(String session, "你好"); 
  String result = gmpa.chat(String session, "你好", assistantId);
  String result = gmpa.chatWithImg(String session, "你好", List<String> imgIds, List<String> imgUrls) 

gmpm包

gpt-magic-plus-memory, 携带上下文且能够归纳对话作为记忆的chat,详细的请看源码

  // 不同构造方法
  GmpMemory gmpm = new GmpMemory();
  // 详见 MemContext 抽象类,默认提供基于内存的实现,可以自己写基于redis 或者数据库的
  GmpMemory gmpm = new GmpMemory(new DefaultMemContext());
  
  // 按需设置参数
   gmpm.setModel();
   gmpm.setMaxTokens();
   ...
  
  // 简单使用
  String result = gmpm.memoryChat("session", "你好");

Version

1.6.1

1.6.0

1.5.2

1.5.1

1.5.0

1.4.4.

1.4.3

1.4.2

1.4.0 ~ 1.4.1

   /**
     * 根据 预设context + 用户prompt 整合 新的 prompt的作图
     *
     * @param prompt
     * @param context
     * @param style   vivid或natural
     * @param size    1=1024x1024 ,2=1024x1792 , 3=1792x1024
     * @return
     */
    public OpenAiImage image(String prompt, String context, String style, int size);

1.3.3

1.3.2 (有bug)

1.3.1 (有bug)

1.3.0

1.2.2

1.2.1

1.2.0

1.1.14

gmp.setAnswerPromptTemplate("首次问答prompt");
gmp.setAnswerOptimizePromptTemplate("后续根据额外数据优化prompt");

1.1.13

1.1.12

1.1.11

1.1.10 bug

1.1.9

1.1.8

1.1.7

1.1.6

1.1.5

1.1.4

1.1.3

1.1.2

Gmp gmp = new Gmp();
gmp.setModel(GptModel.gpt_3p5_turbo); // GptModel.gpt_3p5_turbo_16k

1.1.1

现在可以这样在运行时提前设置属性
System.setProperty("OPENAI_API_KEY","");
System.setProperty("OPENAI_API_SERVER","");

1.1.0

1.0.6

1.0.5

1.0.4

1.0.3

1.0.2

1.0.1

1.0.0

License

This project is an open-sourced software licensed under the MIT license.