に基づいている。 クルーAI マルチインテリジェンス・コラボレーションとCohere Command-R7Bビッグモデルにより、このシステムは、24時間ニュースルームを持つように、調査から執筆までの全プロセスを自動化する。
中核機能:
- リサーチと分析:最初のAIアシスタントは、ニュース、データ、専門家の意見など、トピックに関連するあらゆる情報の検索と整理を担当する。
- コンテンツ作成:2人目のAIアシスタントが、調査資料を完全に構造化された記事に変換し、専門性と読みやすさを確保します。
- ワンクリック生成:ユーザーはトピックを入力するだけで、システムがすべての作業を自動的に行います。
テクニカル・ハイライト
- マルチAIコラボレーションのためのフレームワーク「crewAI」の採用
- cohere、Command-R7Bマクロモデルによる出力品質の確保
- streamlitをベースに、クリーンで使いやすいウェブインターフェースを構築。
そのプロセスを利用する:
- サイドバーに知りたいトピックを入力してください。
- 生成パラメーターの調整オプション(創造性の度合いなど)
- 生成ボタンをクリック
- システムが調査や執筆を終えるのを待つ
- 生成された記事は直接閲覧、ダウンロードが可能
以下に示すアーキテクチャ図は、主要なコンポーネント(インテリジェンス/タスク/ツール)と、それらがどのように相互作用するかを示している!
各コンポーネントとそのコードについては、次に詳しく説明する:
大規模言語モデル(LLM)とウェブ検索ツールの設定
また、対応するAPIキーを保持するための.envファイルも作成する:
シニア・リサーチ・アナリスト
ウェブ検索インテリジェンスは、ユーザーのクエリを受け付け、Serperウェブ検索ツールを使用してインターネットから結果を取得し、統合します。
これを見てくれ!
リサーチアナリスト インテリジェンスボディ タスク
これはシニア・リサーチ・アナリスト・インテリジェンス本体に割り当てられたリサーチ・タスクで、タスクの説明と期待されるアウトプットが記載されている。
コンテンツ・オーサリング・インテリジェンス
コンテンツ・ライティング・インテリジェンスの役割は、集約された結果を使い、洗練された出版可能なニュース記事に仕上げることである。
コンテンツ・ライティング インテリジェント・ボディ
これは、すべての詳細と期待されるアウトプットを含むライティングの課題を説明する方法です:
セットクルー、完了✅
始動🚀
デプロイメント・チュートリアル
AIニュース・ジェネレーター
このプロジェクトでは、CrewAIとCohereのCommand-R:7Bモデルを使ってAIニュースジェネレーターを構築する!
インストールとセットアップ
APIキーの取得::
依存関係のインストール::
Python 3.11以降がインストールされていることを確認してください。
pip install crewai crewai-tools
.env.example
SERPER_API_KEY=your_serper_api_key COHERE_API_KEY=your_cohere_apikey
app.py
インポート os stとしてstreamlitをインポート from crewai import エージェント、タスク、クルー、LLM from crewai_tools import SerperDevTool from dotenv import load_dotenv # 環境変数のロード load_dotenv() # Streamlitページ設定 st.set_page_config(page_title="AI News Generator", page_icon="🐏", layout="wide") #タイトルと説明 st.title("🤖AIニュースジェネレーター、CrewAIとCohereの提供による コマンド R7B") st.markdown("AIエージェントを使用して、あらゆるトピックに関する包括的なブログ記事を生成する。") #サイドバー with st.sidebar: st.header("設定") st.header("コンテンツ設定") # テキスト入力にスペースを取らせる topic = st.text_area( "トピックを入力"、 height=100、 placeholder="コンテンツを生成したいトピックを入力してください..." ) # 必要に応じてサイドバーのコントロールを追加する st.markdown("##詳細設定") temperature = st.slider("温度", 0.0, 1.0, 0.7) # スペースを追加 st.markdown("---") # サイドバーでgenerateボタンを目立たせる generate_button = st.button("Generate Content", type="primary", use_container_width=True) # 役に立つ情報を追加する with st.expander("ℹ️ 使い方"): st.markdown(""): st.expander("ℹ️ 使い方"). st.markdown("") 1.上のテキストエリアに希望のトピックを入力する。 2.必要に応じて温度を調整する(高ければ高いほどクリエイティブになる) 3.コンテンツの生成'をクリックして開始する。 4.AIが記事を生成するのを待つ 5.結果をマークダウン・ファイルとしてダウンロードする """) def generate_content(topic): llm = LLM( model="command-r"、 温度=0.7 ) search_tool = SerperDevTool(n_results=10) # 最初のエージェント:シニア・リサーチ・アナリスト senior_research_analyst = エージェント( role="シニアリサーチアナリスト"、 backstory="あなたは高度なウェブリサーチスキルを持つ専門リサーチアナリストです。" ""から情報を見つけ、分析し、統合することに長けています。 信頼できる情報源と信頼できない情報源を見分ける" "ことに長けています。 "信頼できる情報源と信頼できない情報源を区別する" あなたは、" "信頼できる情報源と信頼できない情報源を区別し、" "事実確認、情報の相互参照、" "重要なパターンと洞察を特定することに長けている。 ""重要なパターンと洞察を特定する。 あなたは、適切な引用と出典の確認を伴う、よく整理された研究概要を提供し" "ている。 あなたの分析は、" "生のデータと解釈された洞察の両方を含んでいる。 「生データと解釈された洞察により、複雑な情報を利用しやすく、実行しやすくしている。 あなたの分析は" "生データと解釈された洞察の両方を含み、複雑な" "情報を利用しやすく、行動しやすくしている。 allow_delegation=False、 verbose=True、" "ソース検証。 verbose=True、 tools=[search_tools]、 ツール=[search_tools]、 llm=llm ) # 第2エージェント:コンテンツライター content_writer = エージェント( role="コンテンツライター", goal="正確性を保ちながら、調査結果を魅力的なブログ記事に変換する", content_writer = Agent( backstory="あなたは、技術的な調査結果を魅力的でわかりやすいコンテンツにすることを専門とする" "技術リサーチから魅力的でアクセスしやすいコンテンツを" 「シニアリサーチアナリストと密接に協力し、有益なコンテンツと面白いコンテンツの完璧な" "バランスを保つことに長けています。 "情報量の多い文章とエンターテインメント性の高い文章のバランスを" 「シニアリサーチアナリストと密接に協力し、リサーチで得た事実や引用が適切に盛り込まれているかどうかを確認しながら、情報量の多い文章と面白い文章の完璧な" "バランスを保つことに長けている。 複雑なトピックを単純化しすぎず、親しみやすいものにする才能がある。 あなたには、" "複雑なトピックを単純化しすぎず、親しみやすくする才能があります。" "一方で、" "調査からの事実や引用がすべて適切に盛り込まれていることを保証します。 あなたは" "複雑なトピックを単純化しすぎずに親しみやすくする才能があります。", allow_delegation=False, verbose=True, verbose=True, verbose=True. 複雑なトピックを単純化しすぎず、親しみやすくする才能がある。 llm=llm ) #研究タスク research_task = タスク( description=("") 1.以下のような{トピック}に関する包括的なリサーチを行う。 - 最近の動向とニュース - 業界の主要トレンドとイノベーション - 専門家の意見と分析 - 専門家の意見と分析 2.情報源の信頼性を評価し、すべての情報を事実確認する。 3.調査結果を構造化した調査概要にまとめる 4.関連する引用と出典をすべて含める """), expected_output=""), expected_output="") expect_output="""以下を含む詳細な研究報告書。 - 主な調査結果の要旨 - 現在のトレンドと動向の包括的分析 - 検証済みの事実と統計のリスト - すべての引用と原典へのリンク - 主要テーマとパターンの明確な分類 参照しやすいように、明確なセクションと箇条書きでフォーマットしてください。 参照しやすいように明確なセクションと箇条書きでフォーマットしてください。"", agent=senior_research_analyst ) #ライティング・タスク writing_task = タスク( description=("") 提供された調査概要を使って、以下のような魅力的なブログ記事を作成する。 1.技術情報を利用しやすいコンテンツに変換する。 2.調査結果の引用と事実の正確性を維持する。 3.以下を含む。 - 注目を集める導入部 - 明確な見出しで構成された本文セクション - 含まれるもの: 注意を引く導入部 明確な見出しで構成された本文セクション 4.すべての出典の引用を[出典:URL]形式で保存する。 5.最後に参考文献のセクションがある 最後に参考文献のセクションを含む """), expected_output="""), および output="""マークダウン形式の洗練されたブログ記事。 - 正確さを保ちながら読者を惹きつける - 適切に構造化されたセクションを含む - 元のソースのURLにハイパーリンクされたインライン引用を含む - アクセスしやすく、かつ有益な方法で情報を提供する - 適切なマークダウン形式に従い、タイトルにはH1、サブセクションにはH3を使用する"",""," エージェント=コンテンツライター ) #クルーを作る クルー = クルー( agent=[senior_research_analyst, content_writer]、 tasks=[research_task, writing_task], verbose=True 冗長=真 ) return crew.kickoff(inputs={"topic": topic}) # メインコンテンツエリア if generate_button. with st.spinner('コンテンツを生成しています。 少し時間がかかります:) 少し時間がかかるかもしれません'): try. result = generate_content(topic) st.markdown("### 生成されたコンテンツ") st.markdown(result) # ダウンロードボタンの追加 st.download_button( label="コンテンツのダウンロード"、 data=result.raw, file_name=f"{topic.lower() ファイル名=f"{topic.lower().replace(' ', '_')}_article.md"、 mime="text/markdown" ) except Exception as e. st.error(f "エラーが発生しました:{str(e)}") #フッター st.markdown("---") st.markdown("CrewAI、Streamlit、CohereのCommand R7Bで構築")