소개
대형 언어 모델 (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/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174442792064130.jpg?x-oss-process=image/resize,p_40" 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

2008 년 이래로 저는 도시 교통의 미래로서 "Robotjitney"라고 불리는 공유 라이드 밴을 옹호했습니다. 나는이 차량들을 21 세기의 차세대 대중 교통 솔루션 인 Surpas로 예측합니다.

체크 아웃 경험 혁명 Sam 's Club의 혁신적인 "Just Go"시스템은 기존 AI 기반 AI 기반 "Scan & Go"기술을 기반으로하여 회원이 쇼핑 중에 Sam's Club 앱을 통해 구매를 스캔 할 수 있습니다.

GTC 2025에서 Nvidia의 향상된 예측 가능성 및 신제품 라인업 AI 인프라의 핵심 업체 인 Nvidia는 고객의 예측 가능성 증가에 중점을두고 있습니다. 여기에는 일관된 제품 제공, 성과 기대치 충족 및 충족이 포함됩니다

Google의 Gemma 2 : 강력하고 효율적인 언어 모델 효율성과 성능으로 축하되는 Google의 Gemma Family of Language 모델은 Gemma 2의 도착으로 확장되었습니다.이 최신 릴리스는 두 가지 모델로 구성됩니다 : 27 억 매개 변수 Ver Ver

이 데이터 에피소드와 함께이 선도에는 주요 데이터 과학자, 천체 물리학 자, TEDX 스피커 인 Kirk Borne 박사가 있습니다. Borne 박사는 빅 데이터, AI 및 머신 러닝 분야의 유명한 전문가 인 현재 상태와 미래의 Traje에 대한 귀중한 통찰력을 제공합니다.

이 연설에는 인공 지능이 사람들의 신체 운동을 지원하는 데 왜 좋은지를 보여주는 공학에 대한 백 그라운드 정보가 매우 통찰력있는 관점이있었습니다. 스포츠에서 인공 지능 적용을 탐구하는 데 중요한 부분 인 세 가지 디자인 측면을 보여주기 위해 각 기고자의 관점에서 핵심 아이디어를 간략하게 설명 할 것입니다. 에지 장치 및 원시 개인 데이터 인공 지능에 대한이 아이디어에는 실제로 두 가지 구성 요소가 포함되어 있습니다. 하나는 우리가 큰 언어 모델을 배치하는 위치와 관련하여 하나의 구성 요소와 다른 하나는 인간 언어와 활력 징후가 실시간으로 측정 될 때“표현”하는 언어의 차이와 관련이 있습니다. Alexander Amini는 달리기와 테니스에 대해 많은 것을 알고 있지만 그는 여전히

Caterpillar의 최고 정보 책임자이자 IT의 수석 부사장 인 Jamie Engstrom은 28 개국에서 2,200 명 이상의 IT 전문가로 구성된 글로벌 팀을 이끌고 있습니다. 현재 역할에서 4 년 반을 포함하여 Caterpillar에서 26 년 동안 Engst

Google Photos의 새로운 Ultra HDR 도구 : 빠른 가이드 Google Photos의 새로운 Ultra HDR 도구로 사진을 향상시켜 표준 이미지를 활기차고 높은 동기 범위의 걸작으로 변환하십시오. 소셜 미디어에 이상적 이며이 도구는 모든 사진의 영향을 높이고


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

WebStorm Mac 버전
유용한 JavaScript 개발 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

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