ペースの速い現代社会では、特定の分野の最新ニュースを追い続けることは難しい。もし、生成AIとエージェントの力を利用して、ローカル・マシンだけで動作するパーソナライズされたニュース・アグリゲーターを作ることができたらどうだろう?この記事では、OllamaのLlama 3...を使う方法を探る。オーラマラマ3.2モデルの、スウォームプロキシスケジューリングの実行ダックダックゴーそのようなシステムを構築するためにウェブ検索を行う。
ローカルAIの力
大規模言語モデルの台頭により、複雑なAIシステムをパーソナル・コンピューター上で実行できるようになった。これは、私たちの特定のニーズに合わせてカスタマイズされたツールを作成するための無限の可能性を開きます。私たちのニュースアグリゲーターは、この可能性の完璧な例です。
システムの構成要素
- ラマとオラマ 3.2 これが私たちのシステムの心臓部であり、AIエージェントを動かしている。
- スウォーム 複数のAIエージェントを作成・管理できるエージェントオーケストレーションフレームワーク。
- DuckDuckGo検索 :: ユーザーデータを追跡することなく、最新のウェブ検索結果を提供します。
動作原理
私たちのニュースアグリゲーターは、主に2つのAIエージェントで構成されている:
- プレス・アシスタント : DuckDuckGo検索を使って、特定のトピックに関する最新のニュース記事を取得します。
- 編集アシスタント 最終プレゼンテーションのために、収集したニュースを見直し、洗練させる。
ワークフローを分解してみよう:
1.環境設定
オラマ llama3.2をプルする
export OPENAI_MODEL_NAME=llama3.2
export OPENAI_BASE_URL=http://localhost:11434/v1
export OPENAI_API_KEY=any
pip install git+https://github.com/openai/swarm.git duckduckgo-search
必要なライブラリをインポートし、Swarmクライアントを初期化することから始める:
from duckduckgo_search import DDGS
from swarm import Swarm, Agent
from datetime import datetime
現在の日付 = datetime.now().strftime("%Y-%m")
クライアント = Swarm()
2.ニュース検索機能の新設
DuckDuckGoを使ってニュースを検索する関数を定義する:
pythondef get_news_articles(topic).
ddg_api = DDGS()
results = ddg_api.text(f"{topic} {current_date}", max_results=5)
if results.
news_results = "\n".join([f "Title: {result['title']}nURL: {result['href']}nDescription: {result['body']}" for result in results])
return news_results
else: return f "ニュース結果を見つけられませんでしたか?
return f "{topic}のニュース結果が見つかりませんでした。"
3. AIエージェントの定義
OllamaのLlama 3.2モデルを使って2つのエージェントを作る:
news_agent = エージェント(
model="llama3.2"、
name="ニュースアシスタント"、
instructions="DuckDuckGo検索を使って、指定したトピックの最新ニュース記事を提供します。", functions=[get_news_articles], news_agent = Agent(
functions=[get_news_articles], )
)
editor_agent = エージェント(
model="llama3.2", name="編集アシスタント", functions=[get_news_articles], )
name="編集アシスタント", instructions="あなたは校閲と校正を行います", ) editor_agent = Agent(
instructions="You review and finalise the news article for publication.", )
)
4.ワークフローの調整
ニュース集約ワークフローを実行する関数を定義する:
def run_news_workflow(topic).
# ニュースの取得
news_response = client.run(
agent=news_agent、
messages=[{"role": "user", "content": f "{current_date}の{topic}に関するニュースを取得"}], )
)
raw_news = news_response.messages[-1]["content"].
# ニュースを編集者に渡して最終確認する
edited_news_response = client.run(
agent=editor_agent、
messages=[{"role": "system", "content": raw_news}],].
)
print(f"{edited_news_response.messages[-1]['content']}")
5.オペレーションシステム
最後に、興味のあるトピックについてニュースアグリゲーターを走らせることができる:
run_news_workflow("AI in Drug Discovery")
全コード : app.py
from duckduckgo_search import DDGS
from swarm import Swarm, Agent
from datetime import datetime
current_date = datetime.now().strftime("%Y-%m")
# Swarmクライアントの初期化
クライアント = Swarm()
# 1.インターネット検索ツールの作成
def get_news_articles(topic).
print(f "{topic}のDuckDuckGoニュース検索を行う...")
# DuckDuckGo検索
ddg_api = DDGS()
results = ddg_api.text(f"{topic} {current_date}", max_results=5)
if results.
news_results = "\n".join([f "Title: {result['title']}nURL: {result['href']}nDescription: {result['body']}" for result in results])
return news_results
else.
return f "{topic}に関するニュース結果の検索に失敗しました。"
# 2.AIエージェントの作成
def transfer_to_editor_assistant(raw_news):
print("Passing article to editor assistant...")
return editor_agent.run({"role": "system", "content": raw_news})
#ニュースエージェントでニュースを取得
news_agent = エージェント(
model="llama3.2"、
name="NewsAssistant"、
instructions="DuckDuckGo 検索を使用して、指定されたトピックに関する最新のニュース記事を提供します。",
functions=[get_news_articles], )
)
# ニュースを編集するエージェント
editor_agent = エージェント(
model="llama3.2"、
name="editor_agent"、
instructions="you review and finalise news articles for publication.",
)
# 3. ワークフローの作成
def run_news_workflow(topic).
print("Running the news agent workflow...")
# 最初のステップ: ニュースの取得
news_response = client.run().
news_response = client.run( agent=news_agent、
messages=[{"role": "user", "content": f "{current_date}の{topic}に関するニュースを取得" }],].
)
raw_news = news_response.messages[-1]["content"].
print(f "取得したニュース: {raw_news}")
# ステップ2: ニュースを編集者に渡して最終確認する
edited_news_response = client.run(
agent=editor_agent、
messages=[{"role": "system", "content": raw_news}],].
)
print(f"{edited_news_response.messages[-1]['content']}")
# 与えられたトピックに対してニュースワークフローを実行する例
run_news_workflow("AI in Drug Discovery")
サンプル出力(コンピューティング)
ニュースエージェントワークフローの実行...
DuckDuckGo ニュース検索を実行しています。
検索されたニュース: ニュース記事に基づいてフォーマットされた回答です。
**創薬における人工知能:革命的な変革
創薬における人工知能(AI)の役割は、医薬品における革命的な転換を意味する。AIは複雑なアルゴリズムを用いて自律的な意思決定を行い、データ分析から人間の能力を代替するのではなく、むしろ補強する。
**課題と限界
有望な進歩にもかかわらず、この分野には課題と限界が残されている。論文「The Role of AI in Drug Discovery(創薬におけるAIの役割)」は、これらの問題を探求し、高品質なデータの必要性、倫理的問題の解決、AIベースのアプローチの限界に対する認識を強調している。
**創薬におけるAI
AIは創薬、薬物設計、薬物-薬物相互作用の研究において重要な役割を果たす可能性がある:
* マルチターゲット薬理学:AIは複数の疾患に対する化合物の有効性を予測することができる。
* 化学合成:AIは化学合成プロセスを最適化し、より迅速で効率的な生産を可能にする。
* 薬剤の再配置:AIは既存の薬剤の新しい用途を特定することができます。
* 薬剤特性の予測:AIは化合物の効力、毒性、物理化学的特性を予測することができます。
** 創薬におけるAIの未来
AIの応用が成功するかどうかは、高品質なデータの入手可能性、倫理的問題の解決、AIベースのアプローチの限界に対する認識にかかっている。
ローカルAIニュース・シンジケーションの利点
- みんかんきぎょう すべての処理はお客様のローカルマシンで行われるため、お客様のデータはお客様の手の中に保存されます。
- カスタマイズ お客様のニーズに合わせて、エージェントの指示を変更したり、新しいエージェントを追加したりすることができます。
- 最新情報 : DuckDuckGoで検索すれば、あなたの選んだトピックに関する最新ニュースを常に入手することができます。
- AIによるキュレーション 編集アシスタントは、収集したニュースをより洗練された最終的なアウトプットに仕上げるため、洗練と整理をサポートする。
評決を下す
このローカルAI搭載ニュースアグリゲータは、大規模言語モデルとウェブ検索機能を組み合わせることの可能性を示している。OllamaのLlama 3.2モデル、エージェントのオーケストレーションのためのSwarm、検索のためのDuckDuckGoを活用することによって、私たちは、プライバシーを維持しながら、興味のあるトピックについて情報を得ることができる強力なツールを作成しました。
AIが進化し続けるにつれて、パーソナライズされたAI搭載ツールを作る可能性は広がり続けるだろう。このニュースアグリゲーターはほんの始まりに過ぎない。これらのテクノロジーを使って、他にどんな革新的なアプリケーションを作れるか想像してみてほしい!