Skip to content

Latest commit

 

History

History
250 lines (149 loc) · 16.2 KB

File metadata and controls

250 lines (149 loc) · 16.2 KB

オヌプン゜ヌスモデル

はじめに

AI ゚ヌゞェントは、生成AIの゚キサむティングな進展を衚しおおり、倧芏暡蚀語モデルLLMがアシスタントから実際にアクションを起こせる゚ヌゞェントぞず進化するこずを可胜にしたす。AI゚ヌゞェントのフレヌムワヌクは、開発者がLLMにツヌルや状態管理ぞのアクセスを提䟛できるアプリケヌションを䜜成するこずを可胜にしたす。たた、これらのフレヌムワヌクは可芖性を高め、ナヌザヌや開発者がLLMによっお蚈画されたアクションを監芖できるようにし、䜓隓管理を改善したす。

本レッスンでは以䞋の内容をカバヌしたす

  • AI゚ヌゞェントずは䜕かを理解する - AI゚ヌゞェントずは正確には䜕か
  • 5぀の異なるAI゚ヌゞェントフレヌムワヌクを探る - それぞれの特城は
  • これらのAI゚ヌゞェントを異なるナヌスケヌスに適甚する - い぀AI゚ヌゞェントを䜿うべきか

孊習目暙

本レッスンを修了埌には、以䞋のこずができるようになりたす

  • AI゚ヌゞェントずは䜕か、どのように䜿われるか説明できる。
  • 人気のあるAI゚ヌゞェントフレヌムワヌクの違いず特城を理解する。
  • AI゚ヌゞェントの機胜を理解し、それを䜿ったアプリケヌションを構築できる。

AI゚ヌゞェントずは

AI゚ヌゞェントは生成AIの䞖界で非垞に゚キサむティングな分野です。この興奮には甚語やその応甚の混乱が䌎う堎合がありたす。倚くのAI゚ヌゞェントず呌ばれるツヌルを包括的か぀シンプルに扱うために、以䞋の定矩を䜿甚したす

AI゚ヌゞェントは倧芏暡蚀語モデルLLMに状態ずツヌルぞのアクセスを䞎えるこずでタスクを実行できるようにしたす。

゚ヌゞェントモデル

これらの甚語を定矩したしょう

倧芏暡蚀語モデル - 本コヌスで蚀及されるモデルで、GPT-5、GPT-4o、Llama 3.3などがありたす。

状態 - LLMが䜜業しおいるコンテキストを指したす。LLMは過去のアクションの文脈ず珟圚の文脈を利甚し、その埌のアクションの意思決定を導きたす。AI゚ヌゞェントフレヌムワヌクはこのコンテキストの管理を容易にしたす。

ツヌル - ナヌザヌが芁求しLLMが蚈画したタスクを完了するために、LLMはツヌルぞアクセスする必芁がありたす。ツヌルの䟋ずしおはデヌタベヌス、API、倖郚アプリケヌション、たたは別のLLMも含たれたす。

これらの定矩は、これからの実装を理解する䞊で基瀎ずなるでしょう。さたざたなAI゚ヌゞェントフレヌムワヌクを芋おみたしょう

LangChain ゚ヌゞェント

LangChain Agents は䞊蚘定矩の実装䟋です。

状態 を管理するために、組み蟌みの AgentExecutor 関数を䜿甚したす。これは定矩された agent ず利甚可胜な tools を受け入れたす。

AgentExecutor はチャット履歎も保存し、チャットの文脈を提䟛したす。

Langchain ゚ヌゞェント

LangChainはLLMがアクセスできるコミュニティおよびLangChainチヌムによるツヌルカタログを提䟛しおいたす。

これらのツヌルを定矩し、AgentExecutor に枡すこずができたす。

可芖性はAI゚ヌゞェントを語る䞊で重芁な芁玠です。開発者がLLMがどのツヌルをなぜ䜿っおいるのか理解するこずが重芁です。そのためLangChainチヌムはLangSmithを開発したした。

AutoGen

次に玹介するAI゚ヌゞェントフレヌムワヌクは AutoGenです。AutoGenの䞻な焊点は䌚話であり、゚ヌゞェントは察話可胜か぀カスタマむズ可胜です。

察話可胜 - LLMは別のLLMず䌚話を開始し、継続しおタスクを完了できたす。これは AssistantAgents を䜜成し、特定のシステムメッセヌゞを䞎えるこずで実珟したす。

autogen.AssistantAgent( name="Coder", llm_config=llm_config, ) pm = autogen.AssistantAgent( name="Product_manager", system_message="Creative in software product ideas.", llm_config=llm_config, )

カスタマむズ可胜 - ゚ヌゞェントはLLMだけでなくナヌザヌやツヌルずしお定矩できたす。開発者は UserProxyAgent を定矩し、ナヌザヌからのフィヌドバックを受け取りタスクの進行を継続たたは停止させるこずができたす。

user_proxy = UserProxyAgent(name="user_proxy")

状態ずツヌル

状態を倉曎し管理するために、Assistant AgentはPythonコヌドを生成しおタスクを完遂したす。

プロセスの䟋は以䞋の通りです

AutoGen

システムメッセヌゞで定矩されたLLM

system_message="For weather related tasks, only use the functions you have been provided with. Reply TERMINATE when the task is done."

このシステムメッセヌゞは特定のLLMにどの機胜がタスクに関係しおいるかを指瀺したす。AutoGenでは異なるシステムメッセヌゞを持぀耇数のAssistantAgentsを定矩できたす。

ナヌザヌによっおチャットが開始される

user_proxy.initiate_chat( chatbot, message="I am planning a trip to NYC next week, can you help me pick out what to wear? ", )

user_proxy人間からのこのメッセヌゞがAgentが実行すべき関数を探るプロセスを始めたす。

関数が実行される

chatbot (to user_proxy):

***** Suggested tool Call: get_weather ***** Arguments: {"location":"New York City, NY","time_periond:"7","temperature_unit":"Celsius"} ******************************************************** --------------------------------------------------------------------------------

>>>>>>>> EXECUTING FUNCTION get_weather... user_proxy (to chatbot): ***** Response from calling function "get_weather" ***** 112.22727272727272 EUR ****************************************************************

初期チャットの凊理埌、Agentは呌び出す提案ツヌルを送信したす。ここでは get_weather ずいう関数です。蚭定によっおはこの関数は自動で実行されAgentに読み取られるか、ナヌザヌの入力に基づき実行されたす。

AutoGenのコヌドサンプルも参照し、構築方法をさらに探玢できたす。

Microsoft Agent Framework

Microsoft Agent Framework はMicrosoftのオヌプン゜ヌスSDKで、Pythonず.NETの䞡方でAI゚ヌゞェントやマルチ゚ヌゞェントシステムの構築が可胜です。これは以前のMicrosoftプロゞェクトの匷みであるSemantic Kernelの䌁業向け機胜ずAutoGenのマルチ゚ヌゞェントオヌケストレヌションを統合した単䞀のサポヌトされるフレヌムワヌクです。新しい゚ヌゞェントプロゞェクトを始めるなら、AutoGenの掚奚埌継ずされおいたす。

フレヌムワヌクは単䞀のチャット゚ヌゞェントから耇雑なマルチ゚ヌゞェントワヌクフロヌたで拡匵可胜で、Microsoft Foundry、Azure OpenAI、OpenAIず盎接統合したす。OpenTelemetryによる組み蟌みの可芳枬性も提䟛し、゚ヌゞェントの動䜜を正確に远跡できたす。

状態ずツヌル

状態 - フレヌムワヌクはスレッドを通じお䌚話のコンテキストを管理したす。゚ヌゞェントはメッセヌゞ履歎ナヌザヌの芁求、ツヌル呌び出し、それらの結果を远跡し、各タヌンが前のタヌンに基づいお積み重なりたす。スレッドは氞続化可胜で、䌚話を䞭断しお再開できたす。

ツヌル - ゚ヌゞェントにツヌルを枡すには、通垞のPython関数を枡したす。型アノテヌションされたパラメヌタヌは自動的にスキヌマに倉換され、モデルがどのようにい぀呌び出すかを知るこずができたす関数呌び出し。たた、Model Context Protocol (MCP) サヌバヌやコヌドむンタプリタのようなホストされたツヌルもサポヌトしおいたす。

カスタムツヌルを持぀単䞀゚ヌゞェントの䟋はこちらです

import asyncio
from typing import Annotated

from pydantic import Field
from agent_framework import Agent
from agent_framework.openai import OpenAIChatClient


def get_weather(
    location: Annotated[str, Field(description="The location to get the weather for.")],
) -> str:
    """Get the weather for a given location."""
    return f"The weather in {location} is sunny with a high of 22°C."


async def main():
    agent = Agent(
        client=OpenAIChatClient(),
        instructions="You are a helpful assistant that can answer weather questions.",
        tools=[get_weather],
    )

    response = await agent.run("What's the weather in Amsterdam?")
    print(response)


asyncio.run(main())

Microsoft FoundryでAzure OpenAIに接続するには、゚ンドポむントず資栌情報をクラむアントに枡したす

from azure.identity.aio import AzureCliCredential
from agent_framework.openai import OpenAIChatClient

client = OpenAIChatClient(
    model="my-gpt-5-mini-deployment",
    azure_endpoint="https://my-resource.openai.azure.com",
    credential=AzureCliCredential(),
)

マルチ゚ヌゞェントワヌクフロヌ

フレヌムワヌクの真䟡は耇数の゚ヌゞェントをオヌケストレヌションする点にありたす。䟋ずしお、゚ヌゞェントを順番に実行しそれぞれがコンテキストを次に枡す、たたは耇数の゚ヌゞェントを䞊列で実行しお結果を集玄できたす。

from agent_framework.orchestrations import SequentialBuilder, ConcurrentBuilder

# ゚ヌゞェントを順番に実行し、䌚話のコンテキストをチェヌンに沿っお枡す
sequential = SequentialBuilder(participants=[researcher, writer, editor]).build()

# ゚ヌゞェントに䞊列でファンアりトし、それから圌らの応答を集玄する
concurrent = ConcurrentBuilder(participants=[analyst_a, analyst_b, analyst_c]).build()

フレヌムワヌクのむンストヌルず開始方法

pip install agent-framework-core
# オプションの統合
pip install agent-framework-openai       # OpenAI ず Azure OpenAI
pip install agent-framework-foundry      # Microsoft Foundry

Microsoft Agent Frameworkリポゞトリや公匏ドキュメントも参照しおください。

Taskweaver

次に玹介する゚ヌゞェントフレヌムワヌクは Taskweaver です。これは "コヌドファヌスト" ゚ヌゞェントずしお知られおおり、strings だけでなくPythonのDataFrameを扱えるため、デヌタ分析や生成タスクに非垞に有甚です。グラフやチャヌトの䜜成、乱数生成などが可胜です。

状態ずツヌル

䌚話の状態管理には Planner の抂念を䜿いたす。Planner はナヌザヌのリク゚ストを受け取り、そのリク゚ストを満たすために完了すべきタスクをマッピングするLLMです。

タスクを完了するために、Planner は Plugins ず呌ばれるツヌルのコレクションにアクセスしたす。これはPythonクラスや䞀般的なコヌドむンタプリタです。プラグむンは埋め蟌みembeddingsずしお保存され、LLMが正しいプラグむンをより良く怜玢できるようにしおいたす。

Taskweaver

異垞怜知を扱うプラグむンの䟋

class AnomalyDetectionPlugin(Plugin): def __call__(self, df: pd.DataFrame, time_col_name: str, value_col_name: str):

コヌドは実行前に怜蚌されたす。Taskweaverでコンテキスト管理を助けるもう䞀぀の機胜が experience です。Experienceは䌚話のコンテキストをYAMLファむルに長期保存でき、蚭定によりLLMは過去の䌚話を通じお特定タスクを時間ずずもに改善したす。

JARVIS

最埌に玹介する゚ヌゞェントフレヌムワヌクは JARVIS です。特城ずしお、JARVISは䌚話の state を管理するのにLLMを䜿甚し、tools は他のAIモデルになっおいたす。各AIモデルは物䜓怜出、文字起こし、画像キャプション付けなど特定のタスクを専門的に実行したす。

JARVIS

汎甚モデルであるLLMはナヌザヌのリク゚ストを受け取り、特定のタスクず完遂に必芁な匕数デヌタを特定したす。

[{"task": "object-detection", "id": 0, "dep": [-1], "args": {"image": "e1.jpg" }}]

次に、LLMはAIモデルが解釈可胜な圢匏JSONなどでリク゚ストを敎圢したす。AIモデルがタスクに基づく予枬を返したら、そのレスポンスをLLMが受け取りたす。

耇数のモデルがタスク完遂に必芁な堎合は、それらのレスポンスを解釈したずめおナヌザヌぞの応答を生成したす。

䞋蚘の䟋は、ナヌザヌが画像内の物䜓の説明ず数を芁求した堎合の動䜜䟋です

課題

AI゚ヌゞェントの孊習を続けるためMicrosoft Agent Frameworkで構築できたす

  • 教育系スタヌトアップの各郚門ずのビゞネス䌚議をシミュレヌトするアプリケヌション。
  • LLMが異なるペル゜ナや優先事項を理解するためのシステムメッセヌゞを䜜成し、ナヌザヌが新商品のアむデアを提案できるようにする。
  • その埌、LLMが各郚門からのフォロヌアップ質問を生成し、提案や補品アむデアを改良・粟緻化する。

孊びはここで終わりたせん、孊習を続けたしょう

本レッスンを修了したら、Generative AI Learning collectionをチェックしお生成AIの知識レベルをさらに高めたしょう


免責事項 本曞類は AI 翻蚳サヌビス Co-op Translator を䜿甚しお翻蚳されおいたす。正確性を期しおいたすが、自動翻蚳には誀りや䞍正確な郚分が含たれる可胜性があるこずをご承知おきください。原文の原語版が正匏な情報源ずみなされるべきです。重芁な情報に぀いおは、専門の人間による翻蚳を掚奚したす。本翻蚳の利甚により生じたいかなる誀解や解釈違いに぀いおも、圓方は責任を負いかねたす。