- Develop servers & commands that enable use of chatgpt in CLI environments (Terminal/Linux environments)
- The API request format provided by open API in cli environment is too complicated.
- The response format to the request sent to open ai api is hard to see at a glance the answer to the question I want.
- Let's make an easy-to-use command considering user convenience. (Let's abstract the use of chatgpt)
- You do not need to know the complex request format of open ai api.
- Header, Body format etc..
- You can use open ai api conveniently in the cli environment.
- It is easy to see the complex response format of open aiap at a glance.
git clone https://github.com/YGwan/spring-chatgpt-communication.git
cd spring-chatgpt-communication/shell
source chatgptCommand.sh
- User's guide
- Developer's guide
- CLI ENV
- It is an environment in which the user executes the desired commands.
- Send a request in question format and show the response to the question.
- UI Roles
- Spring Server
- ake the questions requested by the user and parse them into request packets in the format desired by the OpenAi Server.
- OpenAiRequestEntity class
- Parse the response to an OpenAi Server request sent by the server into a user-friendly response packet.
- OpenAiResponseEntity class
- ake the questions requested by the user and parse them into request packets in the format desired by the OpenAi Server.
- OpenAi Server
- It is actually a server operated by Open Ai.(Server with chatGPT service)
- The server provides api for several services.
- More api can be found at the corresponding address
Springboot, ResTemplate, Shell Script, HTTPS
- ObjectMapper
- It is a technique used to serialize responses and deserialize requests when using the JSON format.
- That is, it provides a function of performing conversion between JSON data and Java objects.
- Class of Jackson Library.
- When converting JSON data to Java objects, use the readValue() method of the ObjectMapper class.
- When converting Java objects into JSON data, use the writeValue() method of the ObjectMapper class.
- ResTemplate
- Technology used to send HTTP requests for RESTful web services and receive responses.
- In other words, it is a technology that is used when an external API is used in the spring and a request is sent to the server and a response to the request is required.
- RestTemplate provides a variety of methods for creating and processing HTTP requests in an easy way.(GET, POST, PUT, DELETE etc..)
- Headers, parameters, body, etc. required for the request can be set.
- When receiving a response, the status code, header, and body of the response can be checked.
- In the future, we will also add technology using WebClient instead of that technology. (Spring 5: RestTemplate Web Client)
-
Chatgpt Question Session Maintenance Method
- When you ask a question on chatgpt, there is a problem in the CLI environment that the content of the previous question is not connected to the next question.
- Method 1: Connect the questions. -> This also does not work normally because the answer to the question is not connected.
- Method 2: Connect questions + answers to those questions. -> It works normally.
public ResponseEntity<String> chat(@RequestBody String request) throws JsonProcessingException { chatRequest = chatRequest + request; // 이전 질문(chatRequest)을 현재 질문 request에 연결한다. HttpEntity<String> openAiRequest = openAiRequestEntity.chatParsed(chatRequest); // open ai api 요청 패킷을 만든다. ResponseEntity<String> openAiResponseEntity = this.openAiResponseEntity.chatParsed(openAiRequest); // 위에서 만든 패킷으로 open ai api에 요청을 보낸 후 결과값을 받아온다.(답만 파싱해서 받는다.) chatRequest = chatRequest + openAiResponseEntity.getBody(); // 답 또한 질문과 연결한다. return openAiResponseEntity; }
- Open ai api server communication(CORS Policy)
- By default, OpenAI servers are open to HTTPS communication.
- So if you want to communicate using HTTP, you cannot communicate with the openAI server.
- However, since the OpenAI server allowed LOCALHOST communication, it is possible to communicate using LOCALHOST.(LOCALHOST uses HTTP by default)
Command | Command Format | Description |
---|---|---|
Help | chatAsk-help | Show user manual. |
Ask questions | chatAsk -m "Content of questions" | chatgpt and show the answers to the questions. |
End of session | chatAsk-clear | End of question session (provides refresh).) |
Grammar Check | chatAsk -gc "Question Content" | Grammar Check for English Sentences. Correct the sentence if the grammar is wrong or show the sentence as it is. |
Voice conversion | chatAsk -at voice file.m4a | When a voice file is sent, the contents of the voice file are displayed in text format. |
Emotional Analysis | chatAsk -md "Question Content" | Emotional Analysis for Sentences. Emotional Analysis is classified into three categories: negative, positive, and netal. |
Sentence Translation | chatAsk -t "Question Contents" | English sentences are translated into Korean and shown. |
Sentence Summary | chatAsk -md "Question Content" | Shows a short summary of the long sentence. |
- MacOS
- Ubuntu
If you only modify the shell script to the correct format for that OS, it works fine for other OS.
- Spring Boot: 2.7.3
- java : 11