No mundo acelerado de hoje, manter-se atualizado com as últimas notícias de uma determinada área pode ser um desafio. E se pudéssemos aproveitar o poder da IA generativa e dos agentes para criar um agregador de notícias personalizado que fosse executado inteiramente em máquinas locais? Neste artigo, exploraremos como usarOllamado modelo Llama 3.2,EnxameRealizar agendamento de proxy eDuckDuckGoFaça uma pesquisa na Web para criar esse sistema.
O poder da IA local
Com o surgimento de modelos de linguagem em grande escala, agora podemos executar sistemas complexos de IA em nossos computadores pessoais. Isso abre infinitas possibilidades para a criação de ferramentas personalizadas de acordo com nossas necessidades específicas. Nosso agregador de notícias é um exemplo perfeito desse potencial.
Componentes do nosso sistema
- Ollama com Llama 3.2 Esse é o coração do nosso sistema, alimentando nossos agentes de IA.
- Enxame Estrutura de orquestração de agentes que nos permite criar e gerenciar vários agentes de IA.
- Pesquisa DuckDuckGo : fornece resultados atualizados de pesquisa na Web sem rastrear os dados do usuário.
Princípio de funcionamento
Nosso agregador de notícias consiste em dois agentes principais de IA:
- Assistente de imprensa Pesquisa: Use a pesquisa do DuckDuckGo para obter os artigos de notícias mais recentes sobre tópicos específicos.
- Assistente editorial Revisão e refinamento das notícias coletadas para a apresentação final.
Vamos detalhar o fluxo de trabalho:
1. configuração do ambiente
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
Começamos importando as bibliotecas necessárias e inicializando nosso Enxame 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. criação de uma função de pesquisa de notícias
Definimos uma função para pesquisar notícias usando o 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. definição de nossos agentes de IA
Criamos dois agentes usando o modelo Llama 3.2 da 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. coordenação de fluxos de trabalho
Definimos uma função para executar nosso fluxo de trabalho de agregação de notícias:
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 operacionais
Por fim, podemos executar nosso agregador de notícias para qualquer tópico de interesse:
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")
saída de amostra (computação)
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的方法局限性的认识。
Benefícios da distribuição local de notícias com IA
- negócios privados Todos os processamentos ocorrem em seu computador local, garantindo que seus dados permaneçam em suas próprias mãos.
- personalização Você pode modificar facilmente as instruções de um agente ou adicionar um novo agente para atender às suas necessidades específicas.
- Informações mais recentes Pesquisa com o DuckDuckGo: ao pesquisar com o DuckDuckGo, você sempre recebe as últimas notícias sobre o tópico de sua escolha.
- Curadoria orientada por IA Assistente editorial: O assistente editorial ajuda a refinar e organizar as notícias coletadas para fornecer um resultado final mais polido.
chegar a um veredicto
Esse agregador local de notícias com tecnologia de IA demonstra o potencial da combinação de modelos de linguagem em grande escala com recursos de pesquisa na Web. Ao aproveitar o modelo Llama 3.2 da Ollama, o Swarm para orquestração de agentes e o DuckDuckGo para pesquisa, criamos uma ferramenta avançada que nos permite ficar informados sobre qualquer tópico de interesse, mantendo nossa privacidade e sendo executada inteiramente em computadores locais.
À medida que a IA continua a evoluir, as possibilidades de criação de ferramentas personalizadas e com tecnologia de IA continuarão a se expandir. Esse agregador de notícias é apenas o começo - imagine que outros aplicativos inovadores você poderia criar com essas tecnologias!