AIパーソナル・ラーニング
と実践的なガイダンス
豆包Marscode1

Ollama、Swarm、DuckDuckGoによるローカルAIニュースアグリゲーターの構築

ペースの速い現代社会では、特定の分野の最新ニュースを追い続けることは難しい。もし、生成AIとエージェントの力を利用して、ローカル・マシンだけで動作するパーソナライズされたニュース・アグリゲーターを作ることができたらどうだろう?この記事では、OllamaのLlama 3...を使う方法を探る。オーラマラマ3.2モデルの、スウォームプロキシスケジューリングの実行ダックダックゴーそのようなシステムを構築するためにウェブ検索を行う。

ローカルAIの力

大規模言語モデルの台頭により、複雑なAIシステムをパーソナル・コンピューター上で実行できるようになった。これは、私たちの特定のニーズに合わせてカスタマイズされたツールを作成するための無限の可能性を開きます。私たちのニュースアグリゲーターは、この可能性の完璧な例です。

システムの構成要素

  1. ラマとオラマ 3.2 これが私たちのシステムの心臓部であり、AIエージェントを動かしている。
  2. スウォーム 複数のAIエージェントを作成・管理できるエージェントオーケストレーションフレームワーク。
  3. DuckDuckGo検索 :: ユーザーデータを追跡することなく、最新のウェブ検索結果を提供します。

動作原理

私たちのニュースアグリゲーターは、主に2つのAIエージェントで構成されている:

  1. プレス・アシスタント : DuckDuckGo検索を使って、特定のトピックに関する最新のニュース記事を取得します。
  2. 編集アシスタント 最終プレゼンテーションのために、収集したニュースを見直し、洗練させる。

ワークフローを分解してみよう:

1.環境設定

ollama pull 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

まず、必要なライブラリをインポートし、次のように初期化します。 スウォーム クライアント

from duckduckgo_search import DDGS
from swarm import Swarm, Agent
from datetime import datetime
current_date = datetime.now().strftime("%Y-%m")
client = 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\n".join([f"Title: {result['title']}\nURL: {result['href']}\nDescription: {result['body']}" for result in results])
return news_results
else:
return f"Could not find news results for {topic}."

3. AIエージェントの定義

OllamaのLlama 3.2モデルを使って2つのエージェントを作る:

news_agent = Agent(
model="llama3.2",
name="News Assistant",
instructions="You provide the latest news articles for a given topic using DuckDuckGo search.",
functions=[get_news_articles],
)
editor_agent = Agent(
model="llama3.2",
name="Editor Assistant",
instructions="You review and finalise the news article for publishing.",
)

4.ワークフローの調整

ニュース集約ワークフローを実行する関数を定義する:

def run_news_workflow(topic):
# Fetch news
news_response = client.run(
agent=news_agent,
messages=[{"role": "user", "content": f"Get me the news about {topic} on {current_date}"}],
)
raw_news = news_response.messages[-1]["content"]
# Pass news to editor for final review
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 客户端
client = 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\n".join([f"标题: {result['title']}\n网址: {result['href']}\n描述: {result['body']}" for result in results])
return news_results
else:
return f"未能找到关于 {topic} 的新闻结果。"
# 2. 创建 AI 代理
def transfer_to_editor_assistant(raw_news):
print("将文章传递给编辑助手...")
return editor_agent.run({"role": "system", "content": raw_news})
# 新闻代理以获取新闻
news_agent = Agent(
model="llama3.2",
name="新闻助手",
instructions="您提供有关给定主题的最新新闻文章,使用 DuckDuckGo 搜索。",
functions=[get_news_articles],
)
# 编辑代理以编辑新闻
editor_agent = Agent(
model="llama3.2",
name="编辑助手",
instructions="您审阅并最终确定新闻文章以供发布。",
)
# 3. 创建工作流程
def run_news_workflow(topic):
print("运行新闻代理工作流程...")
# 第一步: 获取新闻
news_response = client.run(
agent=news_agent,
messages=[{"role": "user", "content": f"获取关于 {topic} 在 {current_date} 的新闻"}],
)
raw_news = news_response.messages[-1]["content"]
print(f"获取的新闻: {raw_news}")
# 第二步: 将新闻传递给编辑进行最终审查
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")

サンプル出力(コンピューティング)

Running news Agent workflow...
Running DuckDuckGo news search for AI in Drug Discovery...
Fetched news: Here's a formatted answer based on the news articles:
**药物发现中的人工智能:革命性的转变**
人工智能(AI)在药物发现中的作用标志着制药领域的革命性转变。AI利用复杂的算法进行自主决策,从数据分析中增强人类能力,而不是取代它们。
**挑战与局限性**
尽管有着令人期待的进展,但在该领域中仍然存在挑战和局限性。论文《AI在药物发现中的作用》探讨了这些问题,强调了高质量数据的必要性、伦理问题的解决以及对基于AI的方法局限性的认识。
**AI在药物发现中的应用**
AI有潜力在药物发现、设计和研究药物间相互作用中发挥关键作用。AI在药物发现中的应用包括:
* 多靶点药理学:AI可以预测化合物对多种疾病的有效性。
* 化学合成:AI可以优化化学合成过程,以实现更快和更高效的生产。
* 药物重定位:AI可以识别现有药物的新用途。
* 预测药物特性:AI可以预测化合物的效力、毒性和物理化学特性。
**药物发现中AI的未来**
随着AI的不断发展,预计将对制药行业产生重大影响。AI的成功应用将依赖于高质量数据的可用性、伦理问题的解决以及对基于AI的方法局限性的认识。

ローカルAIニュース・シンジケーションの利点

  • みんかんきぎょう すべての処理はお客様のローカルマシンで行われるため、お客様のデータはお客様の手の中に保存されます。
  • カスタマイズ お客様のニーズに合わせて、エージェントの指示を変更したり、新しいエージェントを追加したりすることができます。
  • 最新情報 : DuckDuckGoで検索すれば、あなたの選んだトピックに関する最新ニュースを常に入手することができます。
  • AIによるキュレーション 編集アシスタントは、収集したニュースをより洗練された最終的なアウトプットに仕上げるため、洗練と整理をサポートする。

評決を下す

このローカルAI搭載ニュースアグリゲータは、大規模言語モデルとウェブ検索機能を組み合わせることの可能性を示している。OllamaのLlama 3.2モデル、エージェントのオーケストレーションのためのSwarm、検索のためのDuckDuckGoを活用することによって、私たちは、プライバシーを維持しながら、興味のあるトピックについて情報を得ることができる強力なツールを作成しました。

AIが進化し続けるにつれて、パーソナライズされたAI搭載ツールを作る可能性は広がり続けるだろう。このニュースアグリゲーターはほんの始まりに過ぎない。これらのテクノロジーを使って、他にどんな革新的なアプリケーションを作れるか想像してみてほしい!


無断転載を禁じます:チーフAIシェアリングサークル " Ollama、Swarm、DuckDuckGoによるローカルAIニュースアグリゲーターの構築
ja日本語