Construire un agrégateur de nouvelles locales avec Ollama, Swarm et DuckDuckGo
Dans le monde d'aujourd'hui, où tout va très vite, il peut être difficile de se tenir au courant des dernières nouvelles dans un domaine particulier. Et si nous pouvions exploiter la puissance de l'IA générative et des agents pour créer un agrégateur de nouvelles personnalisé qui fonctionne entièrement sur des machines locales ? Dans cet article, nous allons voir comment utiliser l'IA générative et les agents pour créer un agrégateur de nouvelles personnalisé qui fonctionne entièrement sur des machines locales.Ollamadu modèle Llama 3.2,EssaimEffectuer l'ordonnancement du proxy, etCanard enchaînéEffectuez une recherche sur Internet pour construire un tel système.
Le pouvoir de l'IA locale
Grâce à l'essor des modèles linguistiques à grande échelle, nous sommes désormais en mesure d'exécuter des systèmes d'intelligence artificielle complexes sur nos ordinateurs personnels. Cela ouvre des possibilités infinies de création d'outils adaptés à nos besoins spécifiques. Notre agrégateur de nouvelles est un parfait exemple de ce potentiel.
Les composantes de notre système
- Ollama avec Llama 3.2 : C'est le cœur de notre système, qui alimente nos agents d'intelligence artificielle.
- Essaim : Un cadre d'orchestration d'agents qui nous permet de créer et de gérer de multiples agents d'intelligence artificielle.
- Recherche DuckDuckGo : : Fournir des résultats de recherche actualisés sur le web sans tracer les données de l'utilisateur.
Principe de fonctionnement
Notre agrégateur de nouvelles se compose de deux agents principaux d'intelligence artificielle :
- Assistante de presse Recherche : Utilisez la recherche DuckDuckGo pour obtenir les derniers articles d'actualité sur des sujets spécifiques.
- Assistante éditoriale Les nouvelles collectées seront examinées et affinées en vue de la présentation finale.
Décomposons le flux de travail :
1) Mise en place de l'environnement
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
Nous commençons par importer les bibliothèques nécessaires et par initialiser notre Essaim Client :
from duckduckgo_search import DDGS
from swarm import Swarm, Agent
from datetime import datetime
current_date = datetime.now().strftime("%Y-%m")
client = Swarm()
2. créer une fonction de recherche d'informations
Nous définissons une fonction permettant de rechercher des actualités à l'aide de 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. définir nos agents d'intelligence artificielle
Nous créons deux agents en utilisant le modèle Llama 3.2 d'Ollama :
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. la coordination des flux de travail
Nous définissons une fonction pour exécuter notre flux de travail d'agrégation de nouvelles :
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. les systèmes opérationnels
Enfin, nous pouvons faire fonctionner notre agrégateur de nouvelles pour n'importe quel sujet d'intérêt :
run_news_workflow("AI in Drug Discovery")
Code complet : 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")
échantillon de sortie (calcul)
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的方法局限性的认识。
Avantages de la syndication d'informations locales sur l'IA
- entreprise privée Le traitement des données est effectué sur votre machine locale, ce qui garantit que vos données restent entre vos mains.
- personnalisation Vous pouvez facilement modifier les instructions d'un agent ou ajouter un nouvel agent pour répondre à vos besoins spécifiques.
- Dernières informations : En effectuant une recherche avec DuckDuckGo, vous obtenez toujours les dernières nouvelles sur le sujet de votre choix.
- La curation pilotée par l'IA L'assistant éditorial : L'assistant éditorial aide à affiner et à organiser les informations collectées afin de fournir un résultat final plus soigné.
rendre un verdict
Cet agrégateur de nouvelles local alimenté par l'IA démontre le potentiel de la combinaison de modèles de langage à grande échelle avec des capacités de recherche sur le web. En exploitant le modèle Llama 3.2 d'Ollama, Swarm pour l'orchestration des agents et DuckDuckGo pour la recherche, nous avons créé un outil puissant qui nous permet de rester informés sur n'importe quel sujet d'intérêt tout en préservant notre vie privée et en fonctionnant entièrement sur des ordinateurs locaux.
À mesure que l'IA évolue, les possibilités de créer des outils personnalisés alimentés par l'IA ne cesseront de s'étendre. Cet agrégateur de nouvelles n'est qu'un début - imaginez les autres applications innovantes que vous pourriez créer avec ces technologies !
© déclaration de droits d'auteur
L'article est protégé par le droit d'auteur et ne doit pas être reproduit sans autorisation.
Articles connexes
Pas de commentaires...