AI 에이전트를 사용하여 개인화 된 뉴스 다이제스트를 만듭니다
소개
대형 언어 모델 (LLM)의 기능은 빠르게 발전하고 있습니다. 그들은 우리가 다양한 LLM 응용 프로그램을 구축 할 수있게합니다. 작업 자동화에서 워크 플로 최적화에 이르기까지 다양합니다. 흥미로운 응용 프로그램 중 하나는 LLM을 사용하여 지능형 뉴스 다이제스트 또는 뉴스 레터 에이전트를 만듭니다. 이 에이전트는 관련 컨텐츠를 가져 와서 요약 한 후 사용자 정의 된 형식으로 전달할 수 있습니다. 외부 도구 및 데이터 소스와 동적으로 상호 작용하여 관련 정보를 가져올 수 있습니다. 이 기사에서는 Langgraph와 News API와 같은 외부 도구를 사용한 개인화 된 일일 뉴스 다이제스트를 위해 뉴스 다이제스트 에이전트를 구축하는 방법을 배우자.
개요
- Langgraph의 아키텍처와 주요 구성 요소 (상태, 노드 및 가장자리)를 이해하여 사용자 정의 가능한 워크 플로우 에이전트를 구축하십시오.
- NewsAPI와 같은 외부 API를 통합하여 뉴스 레터에서 동적 컨텐츠 생성을위한 실시간 데이터를 가져 오는 방법을 알아보십시오.
- 품질 기준을 기반으로 뉴스 기사를 평가하는 스코어링 시스템을 구현하여 컨텐츠 평가에 LLM을 사용하는 기술을 개발하십시오.
- Python의 전자 메일 판매 라이브러리를 사용하여 선별 된 콘텐츠로 전자 메일 제공에 대한 실질적인 지식을 얻으십시오.
목차
- langgraph에 대한 간단한
- 전제 조건
- 응용 프로그램 흐름을 정의합니다
- 뉴스를 얻으십시오
- 스코어 뉴스
- 이메일 보내기
- 에이전트 구축
- 자주 묻는 질문
langgraph에 대한 간단한
Langgraph는 Langchain 위에 지어졌습니다. Langgraph는 LLM을 사용자 정의 로직 및 도구와 통합하는 동적 워크 플로우를 구축하도록 설계된 프레임 워크입니다. 이를 통해 여러 도구와 API를 결합한 고도로 사용자 정의되고 복잡한 워크 플로가 가능합니다.
Langgraph는 세 가지 핵심 구성 요소로 구성됩니다.
- 주 : 상태는 응용 프로그램 전체에서 공유되는 데이터를 포함합니다. 데이터를 보유 할 수있는 파이썬 데이터 구조 일 수 있습니다. 매개 변수가 다른 상태 객체를 사용하여 정의 할 수 있습니다. 또는 메시지 목록 만 포함 할 수있는 사전 구축 된 MessagessTate를 사용할 수도 있습니다.
- 노드 : 노드는 상태를 읽고 수정할 수있는 함수입니다. 이러한 기능은 상태를 국가에 읽거나 쓰는 첫 번째 주장으로 국가를 취합니다. 또한 사용자 입력을 가져 오는 노드를 표시하고 그래프의 끝을 나타 내기 위해 첫 번째 노드 및 엔드 노드를 표시하는 시작 노드가 있습니다.
- 가장자리 : 가장자리는 다른 노드를 통해 데이터의 흐름을 정의합니다. 또한 기능을 사용하여 다음에 갈 노드를 결정하는 조건부 가장자리가 있습니다. Langgraph의 장점은 여러 가지 방법으로 에이전트를 사용자 정의 할 수 있다는 것입니다. 따라서이 에이전트를 구축하는 방법은 여러 가지가있을 수 있습니다.
이미지에 표시된 것처럼 가장자리는 노드를 연결하고 노드는 상태에서 데이터를 읽거나 쓰십시오.
또한 읽기 : Genai 에이전트와 함께 조직의 이메일 마케팅 최적화
전제 조건
LLM 에이전트 구축을 시작하기 전에 필요한 키와 비밀번호가 있는지 확인하십시오.
API를 통해 LLM 액세스
사용중인 LLM의 API 키를 생성하여 시작하십시오. 이름 '.env'로 텍스트 파일을 만듭니다. 이 키를 .env 파일에 단단히 저장하려면 프로젝트 내에서 비공개로 쉽게 액세스 할 수 있습니다.
다음은 .env 파일이 어떻게 보이는지에 대한 예입니다.
뉴스 데이터 가져 오기
뉴스 컨텐츠를 수집하려면 https://newsapi.org/를 사용합니다. API 키에 가입하고 보안 액세스를 위해 동일한 .env 파일에 저장하십시오.
이메일 보내기
Python을 사용하여 이메일을 보내려면 '덜 안전한 앱'을 활성화하고 Gmail 비밀번호를 .env 파일에 저장할 수 있습니다. 해당 옵션을 사용할 수없는 경우 여기에 언급 된 단계를 따라 Gmail에 액세스 할 수 있습니다.
라이브러리가 필요합니다
주요 라이브러리에는 다음 버전을 사용했습니다.
- 랭케인 - 0.2.14
- Langgraph - 0.2.14
- Langchain-Openai-0.1.14
- Newsapi-Python-0.2.7
응용 프로그램 흐름을 정의합니다
목표는 자연 언어를 사용하여 에이전트를 쿼리하여 특정 주제에 대한 뉴스를 수집하고 이메일을 통해 뉴스 레터를 얻는 것입니다. 이 흐름을 구현하기 위해 먼저 각 키 작업을 처리하는 세 가지 도구를 정의한 다음 에이전트를 구축하여 LLM 및 도구를 호출합니다.
세 가지 도구는 다음과 같습니다.
- 뉴스 가져 오기 : 뉴스 API는 구문 분석 쿼리를 기반으로 관련 뉴스 기사를 검색합니다.
- 뉴스 점수 : 가져온 기사는 다른 LLM으로 전달되어 품질을 평가하고 점수를 매 깁니다. 출력은 품질 점수로 정렬 된 기사 목록입니다.
- 뉴스 전달 : 상위 스코어링 기사는 잘 읽을 수있는 이메일로 형식화되어 사용자에게 전송됩니다.
이제 기능을 정의 할 수 있습니다.
뉴스를 얻으십시오
필요한 라이브러리를 가져 와서 .env 파일을로드하십시오
OS 가져 오기 JSON 수입 팬더를 PD로 가져옵니다 DateTime import DateTime, Timedelta에서 IPYTHON에서 DISPLAY IMAGE, DISPLAY에서 입력 가져 오기 목록, 리터럴, 선택 사항, typeddict, 주석이 붙어 있습니다 Langchain_core에서 Tools 가져 오기 도구 langchain_openai import Chatopenai에서 dotenv import load_dotenv에서 load_dotenv ( '/. env') # .env 파일의 대안은 다음과 같이 .txt 파일을 사용할 수도 있습니다. 파일로 Open ( 'mykey.txt', 'r')을 사용하여 : openai_key = file.read () os.environ [ 'Openai_api_key'] = OpenAi_key
Newsapiclient 및 API 키에서 News_api를 시작하십시오
Newsapi 수입 Newsapiclient에서 News_api_key = os.environ [ 'News_api_key'] News_api = NewsApiclient (api_key = News_api_key)
이제 Langchain의 '도구'데코레이터를 사용하여 Langchain 도구를 정의해 봅시다.
@도구 def get_news (query : str, past_days : int, domains : str) : "" " 쿼리, past_days 등과 같은 주어진 매개 변수에 대한 뉴스를 받으십시오. Args : 쿼리 :이 주제에 대한 뉴스를 검색합니다 Past_days : 과거에 며칠 동안 검색해야합니까? 도메인 :이 리소스의 뉴스 검색 "" " 오늘 = datetime.today () from_date = 오늘 - timedelta (days = past_days) news_details = news_api.get_everything (q = query, from_param = from_date, domains = domains, Sort_by = '관련성') News_Details를 반환합니다
에이전트는 또한 관련성에 따라 기사를 정렬 할 수 있습니다. 다음은이 기능의 출력이 어떻게 보이는지에 대한 예입니다.
'@Tool'데코레이터는 랑 체인 도구를 정의하는 데 사용됩니다. 그런 다음이 도구를 LLM에 바인딩 할 수 있습니다. 위의 함수에서 DOC 문자열도 중요합니다. 그것이 공구 부문 LLM의 출력에 그러한 주장을하는 프롬프트로 LLM에 전달되는 것입니다.
# LLM을 초기화하십시오 gpt = chatopenai (model = "gpt-4o-mini", 온도 = 0) # 도구를 LLM에 바인딩하여 LLM이 쿼리를 기반으로 도구를 반환 할 수 있습니다. gpt_with_tools = gpt.bind_tools ([get_news])
스코어 뉴스
score_news 기능은 미리 정의 된 기준에 따라 점수를 매기고 뉴스 기사를 처리합니다. 그런 다음이 함수는 최고 품질의 기사의 정렬 된 목록을 반환합니다.
필요한 방법을 가져옵니다
langchain_core.pydantic_v1에서 import Basemodel, Field langchain_core.prompts import chatprompttemplate, prompttemplate Langchain_core에서 Messages에서 HumanMessage를 가져옵니다
기능을 정의하자
def score_news (News_Details : Dict) : "" " News_articles의 점수를 계산하고 점수로 정렬하십시오. News_details : 모든 뉴스 기사 "" " # 기사의 마지막 메시지에 액세스하십시오. # 모든 기사를 LLM에 전달하면 비용이 증가합니다. # 우리는 일부 기사 만 점수를 매기도록 선택할 수 있습니다. json_articles = json.loads (News_details [ 'message'] [-1] .content) [ 'articles'] LEN (JSON_ARTICLES)> 15 : 15 : 기사 = json_articles [: 15] 또 다른: 기사 = json_articles # LLM을 안내하라는 시스템 프롬프트. system_prompt = "" " 당신은 뉴스 품질 평가자입니다. 뉴스 기사, 제목, 설명 및 잘린 콘텐츠 및 기타 세부 사항을 제공하겠습니다. 다음 기준을 바탕으로 뉴스 기사를 분석하고 점수를 매 깁니다. 명확성 : 기사가 간결하고 이해할 수있는 방식으로 메시지를 얼마나 잘 전달하는지. 스케일 : 1 (불분명) ~ 25 (매우 명확) 신뢰성 : 제공된 설명 및 기타 세부 사항을 기반으로 기사가 신뢰할 수 있고 사실적으로 정확할 가능성은 얼마나됩니까? 스케일 : 1 (신뢰할 수 없음) ~ 25 (매우 신뢰할 수 있음) 참여 잠재력 : 기사가 독자의 관심을 끌거나 더 많은 생각을 불러 일으킬 가능성이 얼마나 듭니다. 스케일 : 1 (참여하지 않음) ~ 25 (매우 매력적) 영향 :이 기사가 잠재적 인 사회적, 기술적 또는 정치적 결과 측면에서 얼마나 중요하거나 영향력이 있는지. 스케일 : 1 (최소 충격) ~ 25 (높은 충격) 뉴스 기사의 총 점수를 100 점 만점에 제공하여 위의 각 기준에 대한 점수를 추가하십시오. 많은 뉴스 기사를 평가할 것입니다. 따라서 나중에 모든 분류를 할 수 있도록 점수를 매 깁니다. "" " prompt_template = chatprompttemplate.from_messages ([( "system", system_prompt), ( "human", "{news}")))))) # Pydantic 클래스를 정의하여 구조화 된 형식으로 출력을 얻습니다. 클래스 뉴스 (Basemodel) : "" ""뉴스 스코어링 시스템 "" " Total_Score : int = field (설명 = '뉴스 기사의 총 점수') 출처 : str = field (description = "뉴스의 출처") 저자 : 선택 사항 [str] = field (default = none, description = "저자에게 뉴스") 제목 : str = field (description = "뉴스 제목") 설명 : str = field (description = "뉴스에 대한 설명") URL : str = field (description = "뉴스의 URL") urltoimage : 선택 사항 [str] = field (default = none, description = "뉴스의 이미지 URL") # gpt 4o는 점수를 높이지만 더 많은 비용이 듭니다. gpt_4o = chatopenai (model = 'gpt-4o', 온도 = 0) 구조화 된_gpt = gpt_4o.with_structured_output (뉴스) 체인 = 프롬프트 _template | 구조화 된 _gpt # 각 기사를 LLM으로 보내기 위해 다른 세부 사항으로 점수를 얻습니다. results = [chain.invoke ({ 'News': article}). 기사의 기사에 대한 dict (). # 기사를 총 점수별로 정렬하십시오. df = pd.dataframe (결과) .sort_values (by = 'total_score', 오름차순 = 거짓) return { "메시지": [HumanMessage (content = df.to_dict (Orient = 'Records'))}}
함수는 상태를 News_details로 이름을 가진 입력으로 취합니다. 주에는 모든 메시지가 있으므로 기사의 마지막 메시지에 액세스 할 수 있습니다. 비용을 절약하기 위해 상단에서 일부 기사 만 점수를 매기도록 선택할 수 있습니다. 우리는 최고의 스코어링 시스템을 얻기 위해 다른 시스템 프롬프트를 시도 할 수 있습니다.
출력이 정의 된 형식 인 경우 데이터를 처리하는 것이 더 쉽습니다. 따라서 구조물이 Pydantic 클래스를 사용하여 구조를 정의하는 구조적 출력과 함께 LLM을 사용할 수 있습니다.
그런 다음 각 기사를 평가하고 데이터 프레임에 저장할 수 있습니다. 일단 총 점수를 사용하여 기사를 정렬하고 주에 메시지로 추가하십시오.
설명
1. 입력
함수는 모든 메시지가 포함 된 상태 객체를 입력으로 수신합니다. 이 주의 최신 메시지에는 뉴스 기사가 있습니다. 비용을 최소화하기 위해 모든 기사를 작성하는 대신 기사 수를 제한 할 수 있습니다.
2. 점수 과정
우리는 LLM에 상세한 시스템 프롬프트를 제공하여 시스템 프롬프트에 주어진 기준에 따라 각 기사를 점수를 매기도록 지시합니다.
LLM은 시스템 프롬프트에 정의 된 기준에 따라 각 기사를 평가하고 각 기준의 점수를 추가하여 100 점 만점에 총 점수를 할당합니다.
3. 구조화 된 출력
출력이 구조화되고 처리하기 쉽도록 Pydantic 모델 (뉴스)을 정의합니다. 이 모델에는`total_score`,`title`,`description '및`url'과 같은 필드가 포함되어 있습니다. 이 구조화 된 형식을 사용함으로써 LLM은 일관되고 잘 조직 된 결과를 반환 할 수 있습니다.
4. LLM 통합
우리는 구조화 된 작업의 정확성으로 알려진 GPT-4O를 사용하여 기사를 채점합니다. GPT-4O는 기사를 평가하는 데있어 GPT-4O- 미니보다 낫다는 것이 밝혀졌습니다. 각 기사는 LLM을 통해 전달되며 결과는 Pydantic을 사용하여 사전 형식으로 변환됩니다.
5. 정렬 및 출력
모든 기사를 채점 한 후에는 Pandas Dataframe에 기사를 저장하여`total_score`를 내림차순으로 정렬합니다. 그런 다음 정렬 된 목록을 주에 메시지로 반환 할 수 있으며 워크 플로의 다음 부분에서 사용할 준비가되었습니다.
이메일 보내기
Send_email 함수는 정렬 된 뉴스 기사 목록을 가져 와서 HTML 이메일을 생성하여 수신자에게 보냅니다.
라이브러리를 가져옵니다
SMTPLIB, SSL 가져 오기 베이스 64 수입 이메일 가져 오기
send_email 함수를 정의하십시오
def send_email (sorted_news) : # 국가의 마지막 메시지에서 정렬 된 뉴스를 받으십시오. articles = sorted_news [ '메시지'] [-1] .Content # News_article에 이미지가있는 경우 이메일로 표시 할 수 있습니다. news_items_html = "" " 기사 [: 10]의 기사 : 기사 [ 'urltoimage']가 없다면 : news_items_html = f "" " <div> <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174442792064130.jpg" class="lazy" alt="{article [ 'title']}"> <div> <h3 id="a-href-Barticle-B-url-D-D-article-title-a"> <a href="%7Barticle%20%5B%20'url'%5D%7D"> {article [ 'title']} </a> </h3> <p> {기사 [ 'description']} </p> </div> </div> "" " 또 다른: news_items_html = f "" " <div> <div> <h3 id="a-href-Barticle-B-url-D-D-article-title-a"> <a href="%7Barticle%20%5B%20'url'%5D%7D"> {article [ 'title']} </a> </h3> <p> {기사 [ 'description']} </p> </div> </div> "" " # CSS 스타일링 HTML 메시지. 여기에 위의 'News_items_html'을 추가합니다. html = f "" " 몸 {{ Font-Family : Arial, Sans-Serif; 배경색 : #C4C4C4; 여백 : 0; 패딩 : 0; }} .Container {{ 너비 : 80%; 최대 세포 : 600px; 여백 : 0 Auto; 배경색 : #ffffff; 패딩 : 20px; Box-Shadow : 0 4px 8px rgba (0, 0, 0, 0.1); }} h1 {{ 텍스트 정렬 : 센터; 색상 : #333; }} .news-item {{ 디스플레이 : Flex; 정렬 구조 : 센터; 정당화 컨텐츠 : 공간 중간; 국경-바닥 : 1px solid #eeeeee; 패딩 : 15px 0; }} .news-item h3 {{ 여백 : 0; 글꼴 크기 : 16px; 색상 : #007bff; 마진 왼쪽 : 5px; }} .news-item p {{ 글꼴 크기 : 14px; 색상 : #666666; 여백 : 5px 0; 마진 왼쪽 : 5px; }} .news-item a {{ 색상 : #007bff; 텍스트 결정 : 없음; }} .news-item img {{ 너비 : 100px; 높이 : 100px; 객체 적합 : 덮개; Border-Radius : 8px; }} .footer {{ 마진-탑 : 20px; 텍스트 정렬 : 센터; 글꼴 크기 : 12px; 색상 : #999999; }} 스타일> <div> <h1 id="선별-된-뉴스"> 선별 된 뉴스 </h1> {news_items_html} <div> <p> 이것은 개인 뉴스 레터입니다. </p> </div> </div>
위 내용은 AI 에이전트를 사용하여 개인화 된 뉴스 다이제스트를 만듭니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 기사는 최고의 AI 아트 생성기를 검토하여 자신의 기능, 창의적인 프로젝트에 대한 적합성 및 가치에 대해 논의합니다. Midjourney를 전문가에게 최고의 가치로 강조하고 고품질의 사용자 정의 가능한 예술에 Dall-E 2를 추천합니다.

메타의 라마 3.2 : 멀티 모달 및 모바일 AI의 도약 Meta는 최근 AI에서 강력한 비전 기능과 모바일 장치에 최적화 된 가벼운 텍스트 모델을 특징으로하는 AI의 상당한 발전 인 Llama 3.2를 공개했습니다. 성공을 바탕으로 o

이 기사는 Chatgpt, Gemini 및 Claude와 같은 최고의 AI 챗봇을 비교하여 고유 한 기능, 사용자 정의 옵션 및 자연어 처리 및 신뢰성의 성능에 중점을 둡니다.

이 기사는 Grammarly, Jasper, Copy.ai, Writesonic 및 Rytr와 같은 최고의 AI 작문 조수에 대해 논의하여 콘텐츠 제작을위한 독특한 기능에 중점을 둡니다. Jasper는 SEO 최적화가 뛰어나고 AI 도구는 톤 구성을 유지하는 데 도움이된다고 주장합니다.

Shopify CEO Tobi Lütke의 최근 메모는 AI 숙련도가 모든 직원에 대한 근본적인 기대를 대담하게 선언하여 회사 내에서 중요한 문화적 변화를 표시합니다. 이것은 도망가는 트렌드가 아닙니다. 그것은 p에 통합 된 새로운 운영 패러다임입니다

이번 주 AI 환경 : 발전의 회오리 바람, 윤리적 고려 사항 및 규제 토론. OpenAi, Google, Meta 및 Microsoft와 같은 주요 플레이어

2024는 콘텐츠 생성에 LLM을 사용하는 것에서 내부 작업을 이해하는 것으로 바뀌는 것을 목격했습니다. 이 탐사는 AI 요원의 발견으로 이어졌다 - 자율 시스템을 처리하는 과제와 최소한의 인간 개입으로 결정을 내렸다. buildin

이 기사는 Google Cloud, Amazon Polly, Microsoft Azure, IBM Watson 및 Destript와 같은 최고의 AI 음성 생성기를 검토하여 기능, 음성 품질 및 다양한 요구에 대한 적합성에 중점을 둡니다.
