記事ディレクトリ
序文
この記事では、0 から 1 まで、GPT アカウントの登録方法、プロンプト (プロンプト) の書き方、API への Java 呼び出しの簡単な例について説明します。この記事の次へ
登録手続き
1. 公式 Web サイトに通常どおりアクセスできます: https://openai.com/
2. Gmail、Microsoft メールなど、利用可能な外国のメール アドレスを準備します。現在のところ、qq メールボックス、163 およびその他の国内メールボックスはすべて利用できません。3
. 確認コードを受け入れる利用可能な携帯電話を準備します (例: sms-active)。
以下は登録プロセスのスクリーンショットです。現在使用しているインドの携帯電話番号は個人テストに使用できます。
4. GPT公式サイトにログインし、「登録」をクリックし、海外のメールアドレスと購入した携帯電話番号を使用し、SMSによる認証後、GPT3.5を正常に使用できるようになります。
即効性のある言葉をより正確にするにはどうすればよいでしょうか?
公式サイトの説明にもあるように、基本的なテスト戦略は以下の6つです。例えば:
悪いプロンプト: 車について説明する段落を教えてください。
良いプロンプト: ポルシェ スポーツカーについて説明する中国語の段落を教えてください。記事は約 50 ワードである必要があります。
簡単に言うと、AI にユーザーが望むものを推測させるのではなく、より正確な情報を提供して、大規模なモデルに対応するより適切なマッチング情報が得られるようにすることです。
API への単純な呼び出し
ここを見た友人は、特定の形式の http リクエストを open-ai サーバーに送信し、応答から得られる情報を解析または表示することであると推測したはずです。次に、open-ai について見てみましょう。が提供されており、これらのインターフェイスを要求する Java プログラムの作成方法
前提条件: キー sk を申請する
httpclient を使用してリクエスト ヘッダーを手動で入力します
1 つ目は、HttpClients を手動で使用してリクエスト オブジェクトを構築することですが、当然、pom に httpclient の依存関係を導入する必要があります。
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>XXX</version>
</dependency>
//问:请告诉我java序列化的方式
@RequestMapping("/chat")
public void streamChat()throws IOException {
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
HttpPost httpPost = new HttpPost("https://api.openai.com/v1/chat/completions");
StringEntity requestEntity = new StringEntity(
"{\"model\": \"gpt-3.5-turbo\",\"messages\": [{ \"role\" : \"user\" , \"content\": \"请告诉我java序列化的方式\"}], \"temperature\": 0.7, \"max_tokens\": 100}",
"UTF-8"
);
requestEntity.setContentType("application/json");
//如果有用梯子 代理的端口 ip
HttpHost proxy = new HttpHost("代理ip", 代理端口);
RequestConfig requestConfig = RequestConfig.custom()
.setProxy(proxy)
.setConnectTimeout(10000)
.setSocketTimeout(10000)
.setConnectionRequestTimeout(3000)
.build();
httpPost.setConfig(requestConfig);
httpPost.setEntity(requestEntity);
httpPost.addHeader("Authorization", "Bearer sk-你的密钥");
httpPost.addHeader("Content-Type", "application/json");
CloseableHttpResponse response = httpclient.execute(httpPost);
try {
HttpEntity entity = response.getEntity();
if (entity != null) {
String result = EntityUtils.toString(entity);
System.out.println(result);
}
} finally {
response.close();
}
} finally {
httpclient.close();
}
}
既製の包装方法
たとえば、公式 Web サイトで指定されているJava コミュニティ パッケージ
TheoKanning/openai-java
友人がパッケージ化した、より優れた、より簡潔なパッケージを見つけました。これは彼のプロジェクト リンクです:
https://github.com/asleepyfish/chatgpt
。それを試して、このプロジェクトの依存関係を導入し、テストすることができます。
@RestController
public class ChatGPTController {
@GetMapping("/downloadImage")
public void downloadImage(String prompt, HttpServletResponse response) {
OpenAiUtils.downloadImage(prompt, response);
}
}
@GetMapping("/streamChatWithWeb")
public void streamChatWithWeb(String content, HttpServletResponse response) throws IOException {
// 需要指定response的ContentType为流式输出,且字符编码为UTF-8
response.setContentType("text/event-stream");
response.setCharacterEncoding("UTF-8");
OpenAiUtils.createStreamChatCompletion(content, response.getOutputStream());
}
最終効果