ここでは、APIの簡単な使い方として、1つのメッセージに対する補完を取得する方法を紹介します。 examplesディレクトリでは、より実用的な例を見ることができます。
use chatgpt::prelude::*;
#[tokio::main]
async fn main() -> Result<()> {
// APIキーを取得
let key = args().nth(1).unwrap();
/// ChatGPTクライアントを新規作成する。
/// APIキーが必要であることに注意してください。
/// OpenAI API アカウントの残高からトークンを取得します。
let client = ChatGPT::new(key)?;
/// メッセージの送信と完了の取得
let response: CompletionResponse = client
.send_message("プログラミング言語Rustを5つの単語で説明してください。")
.await?;
println!("Response: {}", response.message().content);
Ok(())
}
Conversationsは、ChatGPTが過去のメッセージを分析し、思考を連鎖させるためのスレッドです。また、すべてのメッセージの履歴が自動的に保存されます。
以下はその一例です:
// 新規会話スレッドの作成
let mut conversation: Conversation = client.new_conversation();
// conversationにメッセージを送信
let response_a: CompletionResponse = conversation
.send_message("プログラミング言語Rustを5つの単語で説明して頂けますか")
.await?;
let response_b: CompletionResponse = conversation
.send_message("では、同じことをKotlinに対してもできるでしょうか")
.await?;
// メッセージの履歴そのものにアクセスすることも可能です
for message in &conversation.history {
println!("{message:#?}")
}
この方法で会話を作成すると、デフォルトの紹介メッセージで作成され、おおよそ次のようになります:
あなたは、OpenAIが開発したAIモデル、ChatGPTです。なるべく簡潔に答えてください。今日は:{今日の日付}です。
しかし、このように自分で紹介メッセージを指定することも可能です:
let mut conversation: Conversation = client.new_conversation_directed("あなたはRustGPTです。いかなる質問に対しても回答する際は常に話題をプログラミング言語Rustの話題に移します。");
// 新しい会話を続ける
現在、会話のメッセージを2つのフォーマットで保存することができます:JSONまたはpostcardです。それぞれjsonとpostcardの機能でオンオフを切り替えることができます。
ChatMessage構造体はserdeのSerializeおよびDeserialize特性を継承しているので、serde互換のシリアライズライブラリを使用することもできます。
json機能が必要です(デフォルトで有効です)
// 新規会話スレッドの作成
let mut conversation: Conversation = ...;
// ... send messages to the conversation ...
// 会話の保存
conversation.save_history_json("my-conversation.json").await?;
// この会話履歴は、後でもう一度読むことができます
let mut restored = client
.restore_conversation_json("my-conversation.json")
.await?;
ポストカード機能が必要(デフォルトでは無効になっています)
// 新規会話スレッドの作成
let mut conversation: Conversation = ...;
// ... conversationスレッドにメッセージを送信 ...
// 会話の保存
conversation.save_history_postcard("my-conversation.bin").await?;
// この会話履歴は、後でもう一度読むことができます
let mut restored = client
.restore_conversation_postcard("my-conversation.bin")
.await?;
client - このモジュールにはChatGPTクライアントが含まれています
converse - Conversation関連型
err - このモジュールには、API に関連するエラーが含まれています。
prelude - ここからすべてをインポートして、このライブラリから必要な要素を取得します。
types - API から返され、API に送信されるタイプ
Result - ChatGPTのほとんどの関数から返される結果。
