AIパーソナル・ラーニング
と実践的なガイダンス

Dynamiq:AIアプリケーション開発を簡素化するRAGとLLMエージェントをサポートするインテリジェント・ボディ・オーケストレーション・フレームワーク

この記事は2024-11-26 15:45に更新されました。内容の一部は時間的制約があります!

はじめに

Dynamiqは、エージェントAIと大規模言語モデリング(LLM)アプリケーションのために設計されたオープンソースのAIオーケストレーションフレームワークです。Dynamiqは、特にRAG(Retrieval Augmented Generation)とLLMエージェントのオーケストレーションの分野で、AI駆動型アプリケーションの開発を簡素化することを目的としています。Dynamiqは、開発者が迅速に開始し、複雑なAIアプリケーションを効率的に構築できるように、豊富な機能モジュールと詳細なドキュメントを提供します。

 

特性

Dynamiqは、LLMの推論能力(脳)と具体的な行動を実行する能力(手)を組み合わせることで、AIが現実世界の問題を解決することを可能にする革新的なAIフレームワークである。


// リ・アクトの定義:

  • リ・アクト は、LLMの推論能力と演算能力を組み合わせたフレームワークである。
  • AIが現実世界を理解し、計画し、相互作用することを可能にする。

// ReActエージェントの働き
これは2つの重要な要素を統合している:

  • 頭脳(LLMが提供する思考力)
  • 手(オペレーション能力)

// フレームワークのコンポーネント:

  • タスク
  • エージェント(LLMとツールを含むインテリジェンス)
  • 環境
  • 応答

// 実用例:
著者らは、傘が必要かどうかを判断するシナリオで、ReActエージェントのワークフローを説明している:

  • 傘を持ってくる必要があるかどうかを尋ねるタスクをユーザーから受け取る
  • 天気予報をチェックするツールを使う
  • 推論分析を行う
  • 推奨される回答を挙げる

Akshayによって共有された// Dynamiqフレームワーク:
Dynamiqは、AIアプリケーションの開発プロセスを合理化することに焦点を当てた次世代AI開発のための包括的なフレームワークであり、以下のような主要な機能を備えています。 ラグ とLLMのエージェント・システム。

// 主な特徴
オールインワン:AIアプリケーションの開発に必要なすべてのツールと機能を統合したワンストップ(「オールインワン」)フレームワーク。

専門分野

  • RAGシステムの組織
  • LLMエージェントの管理
  • AIアプリケーションの開発プロセス最適化

ポジショニング:

  • オーケストレーション・フレームワークとして機能し、個々のAIコンポーネントの調整と管理に焦点を当てる。
  • エージェント型AIアプリケーションの開発
  • AIアプリを構築する際の開発者の複雑さを単純化する

 

機能一覧

  • インストールと設定Python環境をサポートする詳細なインストールガイドを提供します。
  • ドキュメントと実例豊富なドキュメントとサンプルコードで、すぐに使い始めることができます。
  • シンプルなLLMプロセスシンプルなLLMワークフローの例を提供することで、簡単に理解し、使用することができます。
  • リアクト・エージェント統合されたE2Bコードインタプリタにより、複雑なコーディング作業をサポートするエージェントです。
  • マルチエージェントスケジューリングマルチエージェントの協力と複雑なタスクの解決をサポートします。
  • RAGドキュメントの索引付けと検索PDF 文書の前処理、 ベ ク ト ル埋め込み、 格納をサポー ト し 、 関連文書の検索や質問応答をサポー ト し ます。
  • メモリー付きチャットボット会話履歴の保存と検索をサポートするシンプルなチャットボット。

 

ヘルプの使用

インストールと設定

  1. PythonのインストールコンピュータにPythonがインストールされていることを確認してください。
  2. Dynamiqのインストール::
    pip install dynamiq
    

    あるいはソースコードからビルドする:

    git clone https://github.com/dynamiq-ai/dynamiq.git
    cd dynamiq
    詩のインストール
    

使用例

シンプルなLLMプロセス

以下はシンプルなLLMワークフローの例である:

from dynamiq.nodes.llms.openai import OpenAI
from dynamiq.connections import OpenAI as OpenAIConnection
from dynamiq import ワークフロー
from dynamiq.prompts import プロンプト, メッセージ
# 翻訳プロンプトのテンプレートを定義する
prompt_template = ""
次のテキストを英語に翻訳してください。
"""
prompt = Prompt(messages=[Message(content=prompt_template, role="user")])
# LLMノードのセットアップ
llm = OpenAI(
id="openai"、
connection=OpenAIConnection(api_key="$OPENAI_API_KEY")、
model="gpt-4o"、
temperature=0.3, max_tokens=1000
max_tokens=1000, prompt=prompt
プロンプト
)
# ワークフローオブジェクトの作成
ワークフロー = ワークフロー()
workflow.flow.add_nodes(llm)
# ワークフローを実行する
result = workflow.run(input_data={"text": "Hola Mundo!"})
print(result.output)

リアクト・エージェント

以下は、複雑なコーディング作業をサポートするReActエージェントの例です:

from dynamiq.nodes.llms.openai import OpenAI
from dynamiq.connections import OpenAI as OpenAIConnection、 E2B E2BConnection として
from dynamiq.nodes.agents.react.import ReActAgent
from dynamiq.nodes.tools.e2b_sandbox import E2BInterpreterTool
# E2Bツールを初期化します。
e2b_tool = E2BInterpreterTool(connection=E2BConnection(api_key="$API_KEY"))
#でLLMをセットアップする
llm = OpenAI(
id="openai"、
connection=OpenAIConnection(api_key="$API_KEY")、
model="gpt-4o"、
temperature=0.3, max_tokens=1000
max_tokens=1000, )
)
# ReActエージェントの作成
agent = ReActAgent(
name="react-agent"、
llm=llm、
tools=[e2b_tool]、
role="Senior Data Scientist"、
max_loops=10, )
)
# エージェントを実行する
result = agent.run(input_data={"input": "Add the first 10 numbers and tell if the result is prime."}))
print(result.output.get("content"))

マルチエージェントスケジューリング

以下は、複数のエージェントが協力する例である:

from dynamiq.connections import OpenAI as OpenAIConnection, ScaleSerp as ScaleSerpConnection, E2B as E2BConnection
from dynamiq.nodes.llms import OpenAI
from dynamiq.nodes.agents.orchestrators.adaptive import AdaptiveOrchestrator
from dynamiq.nodes.agents.orchestrators.adaptive_manager import AdaptiveAgentManager
from dynamiq.nodes.agents.react.import ReActAgent
from dynamiq.nodes.agents.reflection.import ReflectionAgent
from dynamiq.nodes.tools.e2b_sandbox import E2BInterpreterTool
from dynamiq.nodes.tools.scale_serp import ScaleSerpTool
#初期化ツール
python_tool = E2BInterpreterTool(connection=E2BConnection(api_key="$E2B_API_KEY"))
search_tool = ScaleSerpTool(connection=ScaleSerpConnection(api_key="$SCALESERP_API_KEY"))
# LLMの初期化
llm = OpenAI(connection=OpenAIConnection(api_key="$OPENAI_API_KEY"), model="gpt-4o", temperature=0.1)
# エージェントの定義
coding_agent = ReActAgent(
name="coding-agent"、
llm=llm、
tools=[python_tool]、
role="コーディングスキルを持つエキスパートエージェント。 ゴールは、Pythonソフトウェアエンジニアリングスキルを使用して、入力タスクのソリューションを提供することです、
max_loops=15, )
)
planner_agent = ReflectionAgent(
name="planner-agent"、
llm=llm、
role="プランニングスキルを持つエキスパートエージェント。 複雑なリクエストを分析し、詳細なアクションプランを提供することが目的です。", )
)
search_agent = ReActAgent(
name="search-agent"、
llm=llm、
tools=[search_tool]、
role="ウェブ検索のスキルを持つエキスパートエージェント。 ゴールは、ウェブ検索と要約のスキルを使って、入力タスクの解決策を提供することである。"、
max_loops=10, )
)
# 適応エージェントマネージャの初期化
agent_manager = AdaptiveAgentManager(llm=llm)
# オーケストレータを作成します
オーケストレータを作成します。
name="adaptive-orchestrator"、
agent=[coding_agent, planner_agent, search_agent]、
manager=agent_manager、
)
# 入力タスクを定義する
input_task = (
"コーディングスキルを使って、過去10年間のNvidiaとIntelの株価に関するデータを収集し、"
"各企業の年平均を計算し、表を作成する。
「もし10年前に$100を投資していたらどうなっていたか?
)
# オーケストレーターを実行する
result = orchestrator.run(input_data={"input": input_task})
print(result.output.get("content"))

RAGドキュメントの索引付けと検索

DynamiqはRAG (Retrieval Augmentation Generation)をサポートしています:

  1. ドキュメントの前処理入力PDFファイルをベクトル埋め込みに変換し、ベクトルデータベースに格納します。
  2. 文書検索ユーザーのクエリに基づいて関連ドキュメントを取得し、回答を生成します。

以下はRAGワークフローの簡単な例である:

from io import BytesIO
from dynamiq import ワークフロー
from dynamiq.connections import OpenAI as OpenAIConnection, Pinecone as PineconeConnection
from dynamiq.nodes.converters import PyPDFConverter
from dynamiq.nodes.splitters.document import DocumentSplitter
from dynamiq.nodes.embedders import OpenAIDocumentEmbedder
from dynamiq.nodes.writers import PineconeDocumentWriter
# ワークフローを初期化する
rag_wf = ワークフロー()
# PDFドキュメントコンバータ
converter = PyPDFConverter(document_creation_mode="one-doc-per-page")
rag_wf.flow.add_nodes(converter)
#ドキュメントスプリッタ
document_splitter = (
DocumentSplitter(split_by="sentence", split_length=10, split_overlap=1)
.inputs(documents=converter.outputs.documents)
.depends_on(converter)
)
rag_wf.flow.add_nodes(document_splitter)
# OpenAIベクトル埋め込み
embedder = (
OpenAIDocumentEmbedder(connection=OpenAIConnection(api_key="$OPENAI_API_KEY"), model="text-embedding-3-small")
.inputs(documents=document_splitter.outputs.documents)
.depends_on(document_splitter)
)
rag_wf.flow.add_nodes(embedder)
#松ぼっくりベクターストア
vector_store = (
PineconeDocumentWriter(connection=PineconeConnection(api_key="$PINECONE_API_KEY"), index_name="default", dimension=1536)
.inputs(documents=embedder.outputs.documents)
.depends_on(embedder)
)
rag_wf.flow.add_nodes(vector_store)
# 入力PDFファイルを用意する
file_paths = ["example.pdf"] とします。
input_data = { 入力データ
"files": [BytesIO(open(path, "rb").read()) for path in file_paths]、
"metadata": [{"filename": path} for path in file_paths]、
}
# RAG インデックス作成処理の実行
rag_wf.run(input_data=input_data)

メモリー付きチャットボット

メモリ付きのシンプルなチャットボットの例です:

from dynamiq.connections import OpenAI as OpenAIConnection
from dynamiq.memory import Memory
from dynamiq.memory.backend.in_memory import InMemory
from dynamiq.nodes.agents.simple import SimpleAgent
from dynamiq.nodes.agents.simple import SimpleAgent

AGENT_ROLE = "親切なアシスタント、ゴールは有益な情報を提供し、質問に答えること"
llm = OpenAI(
connection=OpenAIConnection(api_key="$OPENAI_API_KEY"), model="gpt-4o", "gpt-4o", "gpt-4o", "gpt-4o")
model="gpt-4o"、
temperature=0.1, )
)

memory = Memory(backend=InMemory())
agent = SimpleAgent(
name="Agent"、
llm=llm、
name="Agent", llm=llm, role=AGENT_ROLE, id="agent"、
id="agent"、
memory=memory, )
)

def main().
print("AIチャットへようこそ!(終了するには「exit」と入力してください)")
while True: user_input = input("You:")
user_input = input("あなた: ")
if user_input.lower() == "exit": if user_input.lower() == "exit".
if user_input.lower() == "exit": break

response = agent.run({"input": user_input})
response_content = response.output.get("content")
print(f "AI: {response_content}")

if __name__ == "__main__".
main()
AIイージー・ラーニング

AIを始めるための素人ガイド

AIツールの活用方法を、低コスト・ゼロベースから学ぶことができます。AIはオフィスソフトと同様、誰にとっても必須のスキルです。 AIをマスターすれば、就職活動で有利になり、今後の仕事や勉強の労力も半減します。

詳細を見る
無断転載を禁じます:チーフAIシェアリングサークル " Dynamiq:AIアプリケーション開発を簡素化するRAGとLLMエージェントをサポートするインテリジェント・ボディ・オーケストレーション・フレームワーク

チーフAIシェアリングサークル

チーフAIシェアリングサークルは、AI学習に焦点を当て、包括的なAI学習コンテンツ、AIツール、実践指導を提供しています。私たちの目標は、高品質のコンテンツと実践的な経験の共有を通じて、ユーザーがAI技術を習得し、AIの無限の可能性を一緒に探求することです。AI初心者でも上級者でも、知識を得てスキルを向上させ、イノベーションを実現するための理想的な場所です。

お問い合わせ
ja日本語