Open20

MCP調査

bishopfuncbishopfunc

https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/clients/simple-chatbot/mcp_simple_chatbot/main.py

  • ユーザの指示入力
  • LLM APIに問い合わせ(toolの一覧をsystem promptに入れている)
    • llm_response = self.llm_client.get_response(messages)
    • toolの名前、引数を返す
  • tool使用するなら、再度LLM APIに問い合わせ
    • result = await self.process_llm_response(llm_response)
    • ツールに結果を返す
  • tool使用したなら、再度LLM APIに問い合わせ
    • final_response = self.llm_client.get_response(messages)
    • ツールから回答を生成

ツールの選択、ツールの結果から回答生成は各LLMで実装してるっぽい

bishopfuncbishopfunc

Function Calling vs MCP

ほぼ同じ
MCPはtool useを完全に独立して実装できて嬉しい

  • MCPサーバ作る人:
    • MCP仕様を従って作ればいい
    • 今まではAPIを公開(MCPの中身もほぼAPI)
  • MCPクライアント作る人:

https://zenn.dev/yamada_quantum/articles/465c4993465053#functioncallingとは何が違うの?

https://qiita.com/7shi/items/e27866ce51c6b9a0f605

https://zenn.dev/medopstech/articles/699eece5bc9841

bishopfuncbishopfunc

精度が落ちるか

  • system promptにハードコードされてるから精度落ちる
    • →MCPHub的なものがある
  • fuction callingはそれ用にLLMがチューニングされてるのでは
    • 今後MCP用にチューニングされるかも
      • チューニングのレベルが簡単になる、JSONやAPIの話が関係のでtoolformerレベルになるかも?
    • アイデア: MCP用の強化学習環境や失敗・成功パターンのDBがあれば成功率があがるかも?

https://x.com/hiro_gamo/status/1909438869122302312?s=46&t=rLy_m9JcVAw6YQyesmiiaA

https://x.com/hiro_gamo/status/1909530455944376408

https://x.com/hiro_gamo/status/1909415268801298657

bishopfuncbishopfunc

[WIP] 話題のMCPサーバ