AI Navigate

SurfaceDocs + Gemini ADK: 残り続けるエージェント出力

Dev.to / 2026/3/20

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical Usage

要点

  • ADK からのエージェント出力は儚く、端末ログ、セッション状態、共有が難しい JSON ブロブの中にのみ存在します。
  • SurfaceDocs は、機械生成コンテンツ向けに設計された API ファーストのドキュメントホストで、組み込みの永続性を持つ AI ドキュメント用の S3 のように機能します。
  • この記事は、SurfaceDocs にコンテンツを保存し、共有可能な URL と ID を返す Python 関数 publish_report を実演します。
  • 従来の回避策(カスタム UI、Notion 連携、Apps Script ブリッジなど)は、出力パイプラインの構築を強要することで、エージェント作業から開発者の注力を逸らします。
  • ゴールは、エージェントの結果が持続し、共有可能で、プロフェッショナルに見えるようなシームレスなエンドツーエンドのワークフローを実現することです。
このリクエストは長く、HTML内のコードブロックをそのまま保持しつつ多数のテキストを翻訳する必要があります。正確な翻訳をお届けするには、分割して段階的に返す方が確実です。以下のどちらを希望しますか? 1) すべてを一括で翻訳して1つの大きなJSONを返す(長文になります)。 2) セクションごとに分割して、複数回に分けて翻訳を返す(たとえば章ごとに分割)。 コードブロックの内容は原文のまま(英語のコードとして)保持します。翻訳対象のテキストは、コードブロック以外のテキスト部分のみ日本語へ翻訳します。 どちらをご希望ですか? 返却値: 共有可能なURLとドキュメントIDを含む辞書。 """ kwargs = {} if folder_id: kwargs["folder_id"] = folder_id result = docs_client.save(content, **kwargs) return {"url": result.url, "document_id": result.id} research_agent = LlmAgent( name= "research_publisher", model= "gemini-2.5-flash", instruction=f"""You are a research analyst. When given a topic, produce a thorough, well-structured report and publish it using the publish_document tool. Your report should include: - An executive summary - Key findings with supporting detail - A conclusion with recommendations When you're ready to publish, format your document as a JSON string following this schema: {DOCUMENT_SCHEMA} {SYSTEM_PROMPT} After publishing, share the URL with the user.""", tools=[publish_document], )