Skip to content

Latest commit

 

History

History
318 lines (245 loc) · 20.3 KB

README_ja.md

File metadata and controls

318 lines (245 loc) · 20.3 KB
logo

License Supported Python versions Supported OSs

简体中文 | English | 日本語


AppBuilder SDKとは?

Baidu AI Cloud Qianfan AppBuilder SDKは、Baidu AI Cloud Qianfan AppBuilderによって提供されるAIネイティブアプリケーション開発者向けの「ワンストップ開発ツール」です。

Baidu AI Cloud Qianfan AppBuilder-SDKは、AIアプリケーション開発者向けに以下の基本機能を提供します:

  1. 利用

    • 大規模言語モデルを利用し、Baidu AI Cloud Qianfan大規模モデルプラットフォームで自由にモデルにアクセスし、プロンプトを開発および最適化します。

    • 機能コンポーネントを統合し、Baiduのエコシステムから提供される40以上の高品質なグループを提供し、エージェントアプリケーションに力を与えます。

    • AIネイティブアプリケーションを統合し、Baidu AI Cloud Qianfan AppBuilderプラットフォームで公開されたAIネイティブアプリケーションにAppBuilderClientを通じてアクセスおよび管理し、エンドクラウドコンポーネントをリンクするためにローカル関数を登録します。

  2. オーケストレーション

    • 知識フローをオーケストレーションおよび管理し、KnowledgeBaseを通じて知識ベースを管理し、文書および知識スライスの作成、読み取り、更新、削除(CRUD)操作を実行し、Baidu AI Cloud Qianfan AppBuilderプラットフォームと共に業界グレードのRAGアプリケーションを開発します。

    • ワークフローをオーケストレーションおよび自動化し、MessageComponentAgentRuntimeなどの多層ワークフロー抽象を提供し、ワークフローのオーケストレーションを実現し、LangChainやOpenAIなどの業界エコシステム機能と統合します。

  3. 監視

    • 開発者が生産環境で使用するための可視化トレースおよび詳細なデバッグログなどの監視ツールを提供します。
  4. デプロイメント

    • AgentRuntimeは、FlaskおよびGunicornに基づくAPIサービスとしてデプロイメントをサポートします。
    • AgentRuntimeは、Chainlitに基づく対話型フロントエンドアプリケーションとしてデプロイメントをサポートします。
    • プログラムをBaidu Cloudに迅速にデプロイし、パブリックネットワークAPIサービスを提供し、AppBuilderのワークフロー機能と統合するためのappbuilder_bce_deployツールを提供します。

どのようにインストールしますか?

Baidu AI Cloud Qianfan AppBuilder SDKの最新バージョンは0.9.6(2024-10-26)です

Baidu AI Cloud Qianfan AppBuilder SDKのリリースノートについては、バージョン説明をご覧ください。

  • 最新の安定バージョンのPythonをインストールすることをお勧めします。
python3 -m pip install --upgrade appbuilder-sdk
  • JavaおよびGoバージョンのインストールやDockerイメージの使用については、インストール手順をご覧ください。

最初のAIネイティブアプリケーションをすぐに開始しましょう!

  • >=3.9のPython環境にappbuilder sdkをインストールし、このエンドツーエンドアプリケーションの例を使用してください。
  • 例では試用トークンが提供されていますが、アクセスとQPSが制限されています。正式な使用には個人のトークンに置き換えてください。

1. 大規模言語モデル

  • Playgroundコンポーネントは自由に呼び出すことができます。Baidu AI Cloud Qianfanモデルプラットフォームで許可された任意のモデルに対して、プロンプトテンプレートとモデルパラメータをカスタマイズできます。

コード例

import appbuilder
import os

# 環境変数にTOKENを設定します。以下のTOKENはアクセスとQPSが制限された試用TOKENです。正式な使用には個人のTOKENに置き換えてください。
os.environ["APPBUILDER_TOKEN"] = "bce-v3/ALTAK-n5AYUIUJMarF7F7iFXVeK/1bf65eed7c8c7efef9b11388524fa1087f90ea58"

# プロンプトテンプレートを定義します。
template_str = "あなたは{role}の役割を果たします。私の質問に答えてください。\n\n質問:{question}。\n\n回答:"

# 入力を定義し、playgroundコンポーネントを呼び出します。
input = appbuilder.Message({"role": "Javaエンジニア", "question": "Java言語のメモリ回収メカニズムについて簡単に説明してください。100文字以内でお願いします。"})

playground = appbuilder.Playground(prompt_template=template_str, model="Qianfan-Agent-Speed-8k")

# タイプライターのように、ストリーム形式で大規模モデルの回答内容を表示します。
output = playground(input, stream=True, temperature=1e-10)
for stream_message in output.content:
    print(stream_message)

# ストリーム出力が終了した後、再度完全な大規模モデルの対話結果を表示できます。回答内容の他に、トークンの使用量も含まれます。
print(output.model_dump_json(indent=4))

回答表示

Java言語の
メモリ回収メカニズムは、ガベージコレクタ(Garbage Collector)を通じて実現されます。
ガベージコレクタは、使用されなくなったオブジェクトを自動的に検出し、その占有するメモリ空間を解放します。これにより、システムのメモリが枯渇しないようにします。
Javaは、シリアルコレクタ、パラレルコレクタ、CMSコレクタ、G1コレクタなど、さまざまなガベージコレクタを提供しており、異なるシナリオでのパフォーマンス要件に対応しています。

{
    "content": "Java言語のメモリ回収メカニズムは、ガベージコレクタ(Garbage Collector)を通じて実現されます。ガベージコレクタは、使用されなくなったオブジェクトを自動的に検出し、その占有するメモリ空間を解放します。これにより、システムのメモリが枯渇しないようにします。Javaは、シリアルコレクタ、パラレルコレクタ、CMSコレクタ、G1コレクタなど、さまざまなガベージコレクタを提供しており、異なるシナリオでのパフォーマンス要件に対応しています。",
    "name": "msg",
    "mtype": "dict",
    "id": "2bbee989-40e3-45e4-9802-e144cdc829a9",
    "extra": {},
    "token_usage": {
        "prompt_tokens": 35,
        "completion_tokens": 70,
        "total_tokens": 105
    }
}

2. コンポーネントの呼び出し

  • SDKは、Baiduのエコシステムから提供される40以上の高品質なコンポーネントを提供しています。リストはコンポーネントリストで確認できます。呼び出す前に無料試用クォータを申請してください。
  • 例のコンポーネントはRAG with Baidu Search Proで、Baidu Searchの検索エンジン技術とERNIEモデルのセマンティック理解能力を組み合わせて、ユーザーの検索意図をより正確に理解し、検索クエリに関連性の高い検索結果を提供します。

コード例

import appbuilder
import os

# 環境変数にTOKENを設定します。以下のTOKENはアクセスとQPSが制限された試用TOKENです。正式な使用には個人のTOKENに置き換えてください。
os.environ["APPBUILDER_TOKEN"] = "bce-v3/ALTAK-n5AYUIUJMarF7F7iFXVeK/1bf65eed7c8c7efef9b11388524fa1087f90ea58"

rag_with_baidu_search_pro = appbuilder.RagWithBaiduSearchPro(model="Qianfan-Agent-Speed-8k")

input = appbuilder.Message("9.11と9.8のどちらが大きいですか?")
result = rag_with_baidu_search_pro.run(
    message=input,
    instruction=appbuilder.Message("あなたは専門知識アシスタントです"))

# 実行結果を出力します。
print(result.model_dump_json(indent=4))

回答表示

{
    "content": "9.11は9.8より小さいです。小数の大小を比較する際には、整数部分と小数部分の数値を逐次比較する必要があります。9.11と9.8の場合、整数部分はどちらも9なので、小数部分で比較する必要があります。小数点後の最初の桁は1と8であり、明らかに1は8より小さいため、9.11は9.8より小さいです。",
    "name": "msg",
    "mtype": "dict",
    "id": "eb31b7de-dd6a-485f-adb9-1f7921a6f4bf",
    "extra": {
        "search_baidu": [
            {
                "content": "大規模モデルの「知能」が疑問視される:9.11 vs 9...",
                "icon": "https://appbuilder.bj.bcebos.com/baidu-search-rag-pro/icon/souhu.ico",
                "url": "https://m.sohu.com/a/793754123_121924584/",
                "ref_id": "2",
                "site_name": "搜狐网",
                "title": "大規模モデルの「知能」が疑問視される:9.11 vs 9.8の比較がAIの理解能力を明らかにする..."
            },
            {
                "content": "究極|9.11は9.8より大きい?大規模モデルはなぜ...",
                "icon": "https://appbuilder.bj.bcebos.com/baidu-search-rag-pro/icon/tencent.svg.png",
                "url": "https://new.qq.com/rain/a/20240717A07JLV00",
                "ref_id": "4",
                "site_name": "腾讯网",
                "title": "究極|9.11は9.8より大きい?大規模モデルはなぜ小学校の数学問題で集団的に..."
            },
            ...
        ]
    },
    "token_usage": {
        "completion_tokens": 77,
        "prompt_tokens": 2008,
        "total_tokens": 2085
    }
}

3. AIネイティブアプリケーションの呼び出し

  • 例のアプリケーションは:ラップメンターです。このリンクをクリックしてウェブページで試してみてください。

コード例

import appbuilder
import os

# 環境変数にTOKENを設定します。以下のTOKENはアクセスとQPSが制限された試用TOKENです。正式な使用には個人のTOKENに置き換えてください。
os.environ["APPBUILDER_TOKEN"] = "bce-v3/ALTAK-n5AYUIUJMarF7F7iFXVeK/1bf65eed7c8c7efef9b11388524fa1087f90ea58"

# AppBuilderのウェブページからアプリケーションIDを取得し、以下にラップメンターのアプリケーションIDを入力します。
app_id = "4678492a-5864-472e-810a-654538d3503c"

app_builder_client = appbuilder.AppBuilderClient(app_id)
conversation_id = app_builder_client.create_conversation()

answer = app_builder_client.run(conversation_id, "「上班狼狈却又追逐梦想」をテーマにラップを作成してください。押韻を保ち、200文字以内にしてください。")
print(answer.content.answer)

回答表示

わかりました。「上班狼狈却又追逐梦想」をテーマに、簡単なラップを作成します。以下は簡単な例です。自分の感覚に合わせて調整してください。

イントロ:
朝九晚五、生活の重圧、
狼狈上班、しかし夢を追いかける、
毎日が新たな挑戦、
未来のために、私は前進する。

バース1:
スーツを着て、ネクタイを締めて、
人混みに入って、名声を追い求める、
狼狈しても、決して諦めない、
心の中に、夢があるから。

フック:
上班狼狈、しかし決して諦めない、
夢を追いかける、それが私の心の灯、
前方を照らし、私を導く、
どんなに困難でも、私は最後まで頑張る。

この小曲は「上班狼狈却又追逐梦想」をテーマに、押韻を通じて上班族が生活の苦しさにもかかわらず、夢を抱いて前進する精神を表現しています。気に入っていただけると幸いです!

AIネイティブアプリケーションのコード例については、Cookbooksをご覧ください。以下のクックブックを優先的にお勧めします:

Baidu AI Cloud Qianfan AppBuilder SDKの機能全景

wechat

ユーザードキュメント

オープンソースコミュニティと活動

AppBuilder-SDK WeChatグループQRコード

wechat

ライセンス

AppBuilder SDKはApache 2.0オープンソースプロトコルに従います。