HomePlayground
Solutions
OpenAI公式Rust言語向けChatGPT APIの使用方法
カニさん
カニさん
March 25, 2023
1

見出し

01
使用方法
02
Conversations
03
会話の持続性
04
JSONによる永続化
05
ポストカードによる永続性
06
モジュール
07
型定義
OpenAI公式Rust言語向けChatGPT APIの使用方法

使用方法

ここでは、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

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による永続化

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のほとんどの関数から返される結果。


タグ

ChatGPTAPIOpenAI

関連記事

【AtCoder用】WSL上でのcargo-competeのインストール方法&操作手順
August 28, 2022
1
© 2023, All Rights Reserved.

初心者向け

RustCoder(推奨)Rust入門(速習)コミュニティ

SNS