Creación de un agregador local de noticias con inteligencia artificial con Ollama, Swarm y DuckDuckGo
Tutoriales prácticos sobre IAPublicado hace 10 meses Círculo de intercambio de inteligencia artificial 2.7K 00
En el vertiginoso mundo actual, mantenerse al día de las últimas noticias en un campo concreto puede ser todo un reto. ¿Y si pudiéramos aprovechar el poder de la IA generativa y de los agentes para crear un agregador de noticias personalizado que funcionara íntegramente con máquinas locales? En este artículo exploraremos cómo utilizarOllamadel modelo Llama 3.2,EnjambreRealizar la programación de proxy, yDuckDuckGoRealiza una búsqueda en Internet para construir un sistema de este tipo.
El poder de la IA local
Con el auge de los modelos lingüísticos a gran escala, ahora podemos ejecutar complejos sistemas de IA en nuestros ordenadores personales. Esto abre infinitas posibilidades para crear herramientas adaptadas a nuestras necesidades específicas. Nuestro agregador de noticias es un ejemplo perfecto de este potencial.
Componentes de nuestro sistema
- Ollama con Llama 3.2 Este es el corazón de nuestro sistema, el poder de nuestros agentes de IA.
- Enjambre Un marco de orquestación de agentes que nos permite crear y gestionar múltiples agentes de IA.
- Búsqueda en DuckDuckGo :: Proporcionar resultados de búsqueda web actualizados sin rastrear los datos del usuario.
Principio de funcionamiento
Nuestro agregador de noticias consta de dos agentes principales de IA:
- Asistente de prensa : Utiliza la búsqueda de DuckDuckGo para obtener los últimos artículos de noticias sobre temas específicos.
- Asistente editorial : Revisar y perfeccionar las noticias recogidas para su presentación final.
Desglosemos el flujo de trabajo:
1. Configuración del entorno
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
Empezaremos importando las librerías necesarias e inicializando nuestro Enjambre Cliente:
from duckduckgo_search import DDGS
from swarm import Swarm, Agent
from datetime import datetime
current_date = datetime.now().strftime("%Y-%m")
client = Swarm()
2. Creación de una función de búsqueda de noticias
Definimos una función para buscar noticias utilizando 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. definir nuestros agentes de IA
Creamos dos agentes utilizando el modelo Llama 3.2 de 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. Coordinación de los flujos de trabajo
Definimos una función para ejecutar nuestro flujo de trabajo de agregación de noticias:
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. Sistemas operativos
Por último, podemos ejecutar nuestro agregador de noticias para cualquier tema de interés:
run_news_workflow("AI in Drug Discovery")
Código completo : 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")
muestra de salida (cálculo)
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的方法局限性的认识。
Ventajas de la sindicación local de noticias sobre IA
- empresa privada Todo el procesamiento tiene lugar en su máquina local, lo que garantiza que sus datos permanecen en sus propias manos.
- personalización El agente: puede modificar fácilmente las instrucciones de un agente o añadir uno nuevo para satisfacer sus necesidades específicas.
- Información más reciente : Al buscar con DuckDuckGo, siempre obtendrás las últimas noticias sobre el tema que elijas.
- Selección basada en IA El asistente editorial ayuda a refinar y organizar las noticias recopiladas para ofrecer un resultado final más pulido.
llegar a un veredicto
Este agregador local de noticias basado en IA demuestra el potencial de combinar modelos lingüísticos a gran escala con capacidades de búsqueda en la web. Aprovechando el modelo Llama 3.2 de Ollama, Swarm para la orquestación de agentes y DuckDuckGo para las búsquedas, hemos creado una potente herramienta que nos permite estar informados sobre cualquier tema de interés manteniendo nuestra privacidad y ejecutándose íntegramente en ordenadores locales.
A medida que la IA siga evolucionando, las posibilidades de crear herramientas personalizadas basadas en ella no dejarán de aumentar. Este agregador de noticias es solo el principio: ¡imagina qué otras aplicaciones innovadoras podrías crear con estas tecnologías!
© declaración de copyright
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...