著者 | 崔昊 レビュー | Chonglou まとめこの記事では、パーソナライズされた仮想キャラクターを作成するための Baichuan Big Model の革新的なテクノロジーとアプリケーションについて詳しく説明します。このテクノロジーは、LangChain と Qianfan の微調整された Llama2-Chinese 大規模モデルを組み合わせて、高度にパーソナライズされたキャラクター カスタマイズ機能を提供します。 著者は、実際の経験と技術的な模倣を通じて、仮想顧客サービスキャラクターを作成することに成功し、自動顧客サービスシステムへの応用可能性を探りました。この記事では、プログラミングと Streamlit インターフェイス設計を通じてこれらの仮想キャラクターを顧客サービス システムなどの現実世界のシナリオに適用し、よりパーソナライズされたユーザー エクスペリエンスを提供する方法も説明します。 導入最近、白川モデルはそのユニークなロールプレイング機能により、幅広い注目を集めています。この革新的な技術により、ユーザーはパーソナライズされた仮想キャラクターを作成できるだけでなく、対話、知識ベースのアップロード、モデルの選択、温度調整などの多様な機能も提供されます。テクノロジー愛好家として、私はこの新興テクノロジーに興味を持ち、自分で体験してその可能性を探ることにしました。 LangChain と Qianfan によって微調整された Llama2-Chinese 大規模モデルと Streamlit のインターフェース設計機能を組み合わせることで、独自の「ロールプレイング」アプリケーションを模倣して作成することに成功しました。最終的に、この技術は自動化された顧客サービス システムに適用され、独自の個性とスタイルを持つ仮想顧客サービス キャラクターが作成されました。この記事では、最初の関心ポイントの発見から、技術の模倣と応用、そして最終的な実際の実装までの探索プロセスを共有します。 白川文字モデルの紹介Baichuan Character Large Model は、その大型モデル技術により、仮想キャラクターインタラクションの分野で大きな話題を呼んでいます。この製品のハイライトを以下にまとめました。 機能のハイライト最強のロールプレイング機能: 業界をリードするロールプレイング アルゴリズムに基づく Baichuan の大規模モデルは、一貫性が高く、擬人化された口語的な会話エクスペリエンスを提供し、ユーザーが継続的に詳細なチャットに参加できるように導きます。 キャラクター作成は高度にカスタマイズ可能で、ユーザーはキャラクターの基本情報、冒頭の発言、性格特性、応答制限などを設定して、高度にパーソナライズされたカスタマイズを実現できます。 キャラクターの応答は事実に基づいて一貫しています: 専用のキャラクター知識ベース機能により、大量の知識ポイントをアップロードできるため、キャラクターの応答が背景知識と設定に厳密に従うことが保証されます。 高品質の公式キャラクターが大量登場:プラットフォームでは、ゲーム、アニメ、オンライン文学、映画、テレビなどの分野を網羅し、政府が作成したさまざまな高品質のキャラクターを継続的にリリースしています。 モデルの使用Baichuan-NPC-Lite : このバージョンは、高度にオープンなパーソナライズされたキャラクターのカスタマイズ機能を提供することに重点を置いており、ロールプレイングと口語表現の高い類似性を確保しながら、回答の正確性を保証します。 Baichuan-NPC-Turbo : Lite バージョンをベースに、ロールプレイングの類似性、論理能力、コマンド追従能力の面でさらに最適化および強化された Turbo バージョンにより、体験効果に対する要求が高いアプリケーション シナリオに適しています。 アプリケーションシナリオ仮想コンパニオンシップ: 感情的なサポートと仲間を提供し、常につながっている仮想の友達を作ります。 感情トーク:ユーザーが自分の感情や考えを遠慮なく表現できる安全な空間。 デジタル ヒューマン マーケティング: ブランド推奨のための仮想イメージを作成するマーケティングに使用されます。 IP複製:ゲームや映画のキャラクターなど、よく知られている仮想キャラクターの複製。 ミステリー ゲーム: ミステリー ゲームのための複雑なロール プレイングとストーリーテリングを提供します。 就寝時のストーリー: ユーザー向けにパーソナライズされた就寝時のストーリー体験をカスタマイズします。 職業的役割: トレーニングや娯楽のためにさまざまな職業をシミュレートします。 これらの機能は、仮想キャラクターを作成し、実際の人々と対話できるようにし、対応するシーンに配置して役割を演じさせることにすぎないようです。 トライアル体験キャラクターモデルがすごいと大々的に宣伝されているのを見て、試してみたくなりました。登録してログインしたら、ホームページの「体験を開始」ボタンをクリックして、製品体験ページをさらに詳しくご覧ください。システムはデフォルトで豊富な役割テンプレートと詳細な説明を提供するため、プロセス全体が直感的で魅力的なものになります。 私は個人的な好みに基づいて、「新しいキャラクター」ボタンから格闘技キャラクターを作成することにしました。彼の名前は「Big Head Tianzun」(名前は実際には少しランダムです)で、ニックネームは「Cute Big Head」です。 「基本設定」では、年齢、体型、干支は虎、星座は乙女座、勤務地は長白山、住居は青城山など、一連のパーソナライズされたラベルを含むキャラクターの個人情報を設定できます。彼の個人的なステータスは独身で、IQは平均的、EQは高いです。彼は米と大きな骨を食べるのが好きですが、ヘビとゴキブリは嫌いです。 もちろん、キャラクターの背景、出身地、先生、キャッチフレーズなどを設定することもできます。ここでは詳しくは述べませんが、簡単に言うと、キャラクターの詳細な説明をすることで、キャラクターの個性をより豊かにすることが目的です。基本的な設定が完了したら、この仮想ヒーローと「会話」を始めました。 下の図に示すように、会話インターフェース全体は ChatGPT に似ており、質疑応答形式で行われます。 私とこのNPC 格闘技競技の話題が議論された。回答から判断すると、このNPCは 基本的には役割設定に沿っています。 技術の模倣実際に試してみると、さまざまな属性設定によって、想像できるあらゆる仮想キャラクター、歴史上の人物さえも作成でき、これらの仮想キャラクターと会話するのは非常に興味深いことがわかりました。最近たまたまLangChainを勉強していたのですが、突然「LangChainで仮想キャラクターを作成できるのではないか?」というアイデアが浮かびました。 LangChain の核となるのは、そのモジュール性と柔軟性です。連鎖的な言語操作を構築することで、開発者が複雑な機能を実装できるアーキテクチャを提供します。このプロセスは、より複雑なロジックを形成するために、さまざまな言語処理モジュールをビルディングブロックのように組み合わせることに似ています。同時に、LangChainのプロンプトを使用します テンプレート その後、大きなモデルを使用して、必要に応じて仮想キャラクターを形作ることができます。 キャラクターのリアリティとインタラクティブ性をさらに高めるために、Baidu Qianfan プラットフォームで微調整された Llama2 中国語バージョンの大型モデルを選択しました。 これら 2 つの手法を組み合わせて、私は Baichuan モデルのコア機能の一部を模倣し始めました。キャラクターの属性や背景ストーリーを定義することで、「生きている」キャラクターを作成できます。 基本的な役割情報を定義する袖をまくってコードを書き始めましょう。コードは次のとおりです。 このコードは、キャラクターに関する情報を作成して表示するために使用される NPC というクラスを定義します。詳細な説明は次のとおりです。 1. クラス定義 class NPC: この行は、NPC という新しいクラスを定義します。 2. 初期化メソッド(__init__) def __init__(self) :これはクラスの初期化メソッドであり、新しい NPC インスタンスが作成されるときに自動的に呼び出されます。 self.name = input("キャラクターに名前を付けてください: ") このコード行は、ユーザーにキャラクターの名前を入力するように求め、それをインスタンス変数 self.name に保存します。 同様に、self.gender、self.personality、self.age、self.birthplace、self.faction、self.background、self.catchphrase、self.self_assessment の各行は、それぞれユーザーが入力したキャラクターの性別、性格、年齢、出身地、宗派、歴史的背景、キャッチフレーズ、自己評価を取得し、インスタンス変数として保存します。 3. 情報表示メソッド(display_info) def display_info(self) :このメソッドは、文字のすべての情報を出力するために使用されます。 print関数とフォーマットされた文字列(f"キャラクター名: {self.name}"など)を使用すると、キャラクターの名前、性別、性格、年齢、出身地、宗派、歴史的背景、キャッチフレーズ、自己評価が出力されます。 4. NPCクラスのインスタンスの作成と使用 npc = NPC() このコード行は、npc という名前の NPC クラスの新しいインスタンスを作成します。作成プロセス中に、init メソッドが呼び出され、ユーザーにロールに関するさまざまな情報を入力するよう要求します。 npc.display_info() このコード行は、npc インスタンスの display_info メソッドを呼び出して、キャラクターに関するすべての情報を出力します。 このコードを使用すると、ユーザーはカスタム キャラクター (NPC) を作成し、そのキャラクターのさまざまな属性 (名前、性別、性格など) を入力し、display_info メソッドを通じてこの情報を表示できます。 上記のコードを実行すると、独自の仮想キャラクターが定義されました。次の内容から判断すると、私は武術の達人であるはずです。
大型模型製作キャラクターNPCあり クラスでは、ビッグモデルを呼び出して対応するロールを作成し、プロンプトワードプロジェクトを通じてビッグモデルにロールを演じさせます。コードは次のとおりです。 このコードは、大規模な言語モデル (Qianfan-Chinese-Llama-2-7B など) を使用して、架空のキャラクター (NPC) とのやり取りを処理します。コードのステップバイステップの説明は次のとおりです。 1. 関連モジュールをインポートする from langchain import PromptTemplate: プロンプト テンプレートを作成および管理するには、langchain パッケージから PromptTemplate クラスをインポートします。 from langchain_community.llms import QianfanLLMEndpoint: langchain_community.llms モジュールから QianfanLLMEndpoint クラスをインポートします。このクラスは、Large Language Model Interface と対話するために使用されます。 2. 大規模言語モデルの初期化 llm = QianfanLLMEndpoint(model="Qianfan-Chinese-Llama-2-7B"): Qianfan-Chinese-Llama-2-7B モデルに接続して使用するために使用される QianfanLLMEndpoint のインスタンスを作成します。 3. NPC属性の抽出 コードは、名前、性別、性格など、NPC のさまざまな属性を取得し、対応する変数に格納します。 4. 質問テンプレートを作成する template = """...""": は、NPC と対話するためのプロンプト テンプレートである複数行の文字列テンプレートを定義します。テンプレートには NPC の詳細が含まれており、最後にユーザーのクエリを挿入するためのプレースホルダー {{Query}} が含まれています。 5. build_npc_interaction_prompt関数を定義する この関数は、ユーザーのクエリと NPC オブジェクトをパラメーターとして受け取ります。 関数内では、NPC の属性を抽出し、それらの属性を使用して、以前に定義したツールチップ テンプレートに入力します。 この関数は、NPC の詳細とユーザーのクエリを含む完全なプロンプト文字列を返します。 6. 最終プロンプトを準備する build_npc_interaction_prompt 関数を呼び出すと、ユーザーのクエリ user_query と NPC オブジェクトが結合され、最終的なプロンプトが生成されます。 7. リクエストを処理するために大規模な言語モデルを使用する print(f"結合されたユーザー要求: {final_prompt}"): 検査のために最終的なユーザー要求を印刷します。 response = llm(final_prompt) : llm オブジェクト (大規模言語モデルのインターフェース) を使用してこの要求を処理し、応答を取得します。 print(f"大規模言語モデルの応答: {response}"): 大規模言語モデルの応答を出力します。 ここでは、次のように結合されたユーザー要求を出力します。
プロンプトという言葉を使うのは簡単です テンプレート 大きなモデルに武術の達人の役を演じてもらいます。ロールプレイが成功したかどうかを確認するには、「彼」に自己紹介してもらう必要があります。次のように:
大物モデルの反応から判断すると、彼はこの役をうまく演じたようだ。次に、彼と会話をする必要があります。 仮想キャラクターと会話するここでは、前に書いた関数を呼び出して、キャラクターに質問してみます。彼を私たちと競争させましょう。 詳細な説明は次のとおりです。 1. ユーザークエリを設定する user_query = '私はあなたに武術で挑戦したいので、受け入れてください': このコード行は、ユーザーのクエリ、つまり武術で NPC に挑戦するという要求を定義します。 2. 最終プロンプトを生成する final_prompt = build_npc_interaction_prompt(user_query, npc): このコード行は、前に定義した build_npc_interaction_prompt 関数を呼び出し、ユーザーのクエリと NPC オブジェクトをパラメーターとして渡します。この関数は、ユーザーのクエリと NPC の詳細に基づいて完全なプロンプト文字列を生成します。 3. 最終的なユーザーリクエストを印刷する print(f"結合されたユーザー要求: {final_prompt}"): print 関数を使用して、最終的なユーザー要求を出力します。このリクエストには、NPC に関するすべての情報と、NPC と格闘技の試合をしたいというユーザーのクエリが含まれています。 4. リクエストを処理するために大規模な言語モデルを呼び出す response = llm(final_prompt): このコード行は、llm オブジェクト (以前に初期化された QianfanLLMEndpoint インスタンス) を使用して最終プロンプトを処理します。 llm オブジェクトはこのリクエストを Large Language Model に送信し、モデルから応答を取得します。 print(f"大規模言語モデルの応答: {response}"): print 関数を使用して、ユーザー要求に対する大規模言語モデルの応答を出力します。 結果を直接見ると次のようになります。
仮想キャラクターによって出力された結果から判断すると、それはまだ比較的フレンドリーです。 シナリオ着陸実際、私たちは大きなモデルに必要な役割を演じさせるために、簡単なプロンプトを使用しました。このアイデアに従えば、役割の基本情報を提供できれば、大きなモデルを使用して無数の「役割」を作成できます。これは、私が最近参加したプロジェクトを思い出させます。それは、「自動顧客サービス」システムで、技術サポート、製品相談、アフターサービスなどを含むさまざまな「顧客サービスアシスタント」が作成されました。彼らは全員カスタマー サービス アシスタントですが、作業領域や使用する言語が異なります。彼らにも異なる役割を定義することはできますか?そう思って、ぜひ試してみたくなりました。キャラクターの基本情報を設定するためのインターフェースを提供し、チャットウィンドウを提供することで、上記のアイデアを実現できました。 上記の実験的なコードとは異なり、次に記述するコードにはシンプルな UI インターフェースが必要なので、Streamlit を選択しました。 Streamlit は、データ アプリをすばやく作成して共有するための Python ライブラリです。データ サイエンティストやエンジニア向けにデータ駆動型 Web アプリケーションを作成するプロセスを簡素化することを目的としています。ユーザーにStreamlitを使用させる 基本情報を入力してStreamlitを使用してください 提供されているダイアログ ボックスを使用すると、作成した仮想キャラクターと通信できます。 カスタマーサービスクラスを作成する上記のアイデアとこれまでの経験に基づいて、顧客サービス関連の情報とメソッドを保存するための基本的な顧客サービス クラスを作成する必要があります。そこで、CustomerServiceAssistant.pyファイルを作成し、次のようにコードを設計しました。 このコードは、カスタマー サービス アシスタントの動作をシミュレートし、Qianfan-Chinese-Llama-2-7B などの大規模な言語モデルと対話するように設計された CustomerServiceAssistant というクラスを定義します。コードの詳細な説明は次のとおりです。 1. クラス定義 class CustomerServiceAssistant :このコード行は、CustomerServiceAssistant という新しいクラスを定義します。 2. 初期化メソッド(__init__) このメソッドは、CustomerServiceAssistant クラスの新しいインスタンスが作成されるときに自動的に呼び出されます。 ニックネーム、性別、年齢、教育レベル、サービス タイプ、自己説明、性格特性などの一部の属性は、デフォルトのパラメータで設定されています。 self.introduction は、カスタマー サービス アシスタントの紹介情報を生成するために使用されるフォーマットされた文字列です。 3. queryCustomerService メソッド このメソッドは、ユーザーのクエリ (user_query) と大規模言語モデル (llm) のインスタンスを受け取ります。 まず、__build_prompt プライベート メソッドを呼び出して、完全なプロンプト文字列を構築します。最終的なユーザー要求を出力し、llm オブジェクトを使用して要求を処理し、応答を取得します。 大規模言語モデルの応答を出力し、応答を返します。 4. __build_prompt プライベートメソッド このメソッドは、カスタマー サービス アシスタントの紹介情報とユーザーのクエリに基づいて、完全なプロンプト文字列を生成します。 書式設定文字列を使用して、カスタマー サービス アシスタントの紹介メッセージとユーザーのクエリを組み合わせます。 このコードは、ユーザーからのクエリを受け取り、大規模な言語モデルを使用して応答を生成できる仮想の顧客サービス アシスタント キャラクターを作成します。この方法では、顧客サービス アシスタントとの対話エクスペリエンスをシミュレートすることができ、顧客サービス シナリオの自動化に適しています。 インタラクティブなインターフェースの作成そしてStreamlitを通じて 顧客サービスの基本情報入力用のインターフェースと会話用の UI インターフェースを構築するには、 app.pyファイルを作成し、次のコードを入力します。 コードのステップバイステップの説明は次のとおりです。 1. 必要なモジュールをインポートする import streamlit as st: Web アプリケーションを構築するための Streamlit ライブラリをインポートします。 from customer_service_assistant import CustomerServiceAssistant: customer_service_assistant モジュールから CustomerServiceAssistant クラスをインポートします。 from langchain_community.llms import QianfanLLMEndpoint: 大規模言語モデルと対話するために使用される QianfanLLMEndpoint クラスをインポートします。 2. サイドバーのユーザー入力を設定する Streamlit のサイドバー コンポーネントを使用して、ニックネーム、性別、年齢、教育レベル、サービス タイプ、自己紹介、性格特性など、カスタマー サービス アシスタントのさまざまな属性に関するユーザー入力を受け取ります。 3. 主な機能 この関数はプログラムのメインエントリポイントです。 ユーザーが「アシスタントの生成」ボタンをクリックすると、ユーザーが入力した情報を使用して CustomerServiceAssistant インスタンスが作成され、成功メッセージが表示されます。 メイン パネルでは、ユーザーはカスタマー サービス アシスタントとの会話内容を入力できます。 ユーザーが「送信」ボタンをクリックすると、プログラムは QianfanLLMEndpoint モデルを使用してユーザーの入力を処理し、モデルによって生成された応答を表示します。 ユーザーがカスタマー サービス アシスタントを生成していない場合は、対応するプロンプト メッセージが表示されます。 4. Streamlitアプリケーションが起動します if __name__ == "__main__":: このコード行は、スクリプトがメイン プログラムとして実行されているかどうかを確認し、実行されている場合は main 関数を呼び出します。 このコードは、Streamlit を使用してインタラクティブな Web アプリを作成します。このアプリでは、ユーザーが仮想カスタマー サービス アシスタントのプロパティをカスタマイズし、会話を行うことができます。このアプリケーションは、大規模な言語モデルを活用して、実際の顧客サービス シナリオをシミュレートし、ユーザー入力に対する顧客サービス アシスタントからの応答を生成しています。 テスト結果コードが完了したら、次のコマンドを実行してstreamlitを起動します。 ウェブ用に書かれた インターフェース インタフェース。 下の図に示すように、streamlit ローカルでウェブをホストする アプリケーションはアクセス アドレスを提供します。 このアドレスにアクセスすると、次のWebページが表示されます。 インターフェイスにアクセスし、カスタマー サービス アシスタントの関連情報を入力しました。含まれるもの: ニックネーム、性別、年齢、教育レベル、サービスタイプ、自己紹介、その他の情報。 「アシスタントの生成」ボタンをクリックすると、右側のダイアログボックスを通じてアシスタントと通信できるようになります。 「こんにちは。商品に関する情報を相談したいのですが」と入力すると、カスタマーサービスアシスタントは、自己紹介の部分も含め、下の図のような応答を返しました。 要約するこの記事では、高度な大規模モデル テクノロジを使用して独自の仮想キャラクターを作成し、それを現実のシナリオに実装する方法を説明します。著者らは、複数の技術を組み合わせることで、Baichuan モデルの機能を模倣し、個性と応用の可能性を備えた仮想キャラクターを作成することに成功しました。これにより、技術愛好家に実験と探索の場が提供されるだけでなく、企業や開発者に仮想キャラクターをビジネスや顧客サービスに適用するための新しいアイデアも提供されます。 著者について51CTO コミュニティ エディター兼シニア アーキテクトの Cui Hao 氏は、ソフトウェア開発とアーキテクチャで 18 年の経験があり、分散アーキテクチャでは 10 年の経験があります。 |
<<: GPT時代の学習アルゴリズム、線形モデルを実装するPytorchフレームワーク
>>: 新しいプログラミングパラダイム: Spring Boot と OpenAI の出会い
この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...
アルパカチームの新たな研究は大ヒットとなっている。彼らは、モデルが 100 個のトークンを 1.5 ...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
人工知能は、職場環境で参照される場合、複雑な感情と視点をもたらします。同僚、友人、または見知らぬ人に...
「ビッグデータ」と「人工知能」はテクノロジー業界で最も価値のある分野となっている。Apple、Go...
知乎のホットな投稿によると、中国のトップAI研究者でUCLA教授の朱松春氏が清華大学オートメーション...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
今こそ、AI の将来を本当に理解するときです。 AI を取り巻く不安は雇用の減少など多岐にわたります...
この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
2020年、COVID-19パンデミックは世界各国の経済に壊滅的な影響を及ぼし、業界を問わずビジネス...
フィナンシャル・タイムズによると、マイクロソフトは、約10万人の1000万枚以上の画像が含まれていた...
人工知能(AI)については多くの報道や解説がなされてきました。奇跡を起こすことができると言う人もいれ...