묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
Hub에서 다운 받은 프롬프트에 이미지 추가하기
안녕하세요. 저는 이번에 pdf를 입력하고 그것을 기반으로하는 멀티모달 graph를 streamlit을 통해 구현했습니다. 근데 제가 이번에 Langchain 관련 코드를 몰라서 완성 된 것과는 별개로 너무 투박하게 코드가 작성된 것 같아서 질문드립니다. 질문 요약 :hub.pull("rlm/rag-prompt")한 프롬포트 str로 뽑기 or이미지 추가해서 메세지만드는 방법 GPT 모델은message_content = [] message_content.append({"type": "text", "text": prompt}) message_content.append( {"type": "image_url", "image_url": {"url": f"data:{image_type};base64,{image_data}"}} ) message = HumanMessage(content=message_content) # 응답받기 client = ChatOpenAI(model='gpt-4o') response = client.invoke([message]) response.content ## str임!해당 모양대로 메세지를 만들고 invoke하면 이미지포함 메세지가 되는 것을 알았습니다.이를 통해 이미지에 보이는것은 ~~문서에있니? 이런식으로 구현하고자 했습니다. generate 함수(노드) 에서 이미지와 텍스트를 같이 메세지로 전달하고 싶은데 조금 어려움을 겪었습니다. generate 함수 코드입니다.해당 함수는 sate['context']의 내용을 프롬포트에 넣고 이를 이미지와 함께 보내고자합니다.# 허브에서 RAG 프롬프트를 가져옵니다 generate_prompt = hub.pull("rlm/rag-prompt") # 지정된 매개변수로 언어 모델을 초기화합니다 generate_llm2 = ChatOpenAI(model='gpt-4o') def generate(state: AgentState) -> AgentState: """ 주어진 state를 기반으로 RAG 체인을 사용하여 응답을 생성합니다. Args: state (AgentState): 사용자의 질문과 문맥을 포함한 에이전트의 현재 state. Returns: AgentState: 생성된 응답을 포함하는 state를 반환합니다. """ context = state['context'] query = state['query_message'] make_massage = [] massage = generate_prompt.invoke({'question': query, 'context': context}) messages = massage.to_messages() # print(massage) # print("--------------------------------") # print(messages) # print("--------------------------------") # print(messages[0]) # print("--------------------------------") # print(messages[0].content) # print("--------------------------------") make_massage.append({"type": "text", "text": messages[0].content}) if state['query_img'] != "": make_massage.append({"type": "image_url", 'image_url': {"url": state['query_img']}}) final_massage = HumanMessage(content=make_massage) response = generate_llm2.invoke([final_massage]) answer = { "type" : "RAGtext", "message" : response.content} print(f"call : generate") return {'answer': answer} 처음에는 prompt에서 str을 추출하려고 했는데 조금 어려웠습니다;from langchain_openai import ChatOpenAI from langchain import hub # 허브에서 RAG 프롬프트를 가져옵니다 generate_prompt = hub.pull("rlm/rag-prompt") print(generate_prompt.messages[0]) print(generate_prompt.messages[0].content) # 'HumanMessagePromptTemplate' object has no attribute 'content' 오류 print(generate_prompt.messages[0].invoke({"context" : "test", "question" : "test22" })) # 오류;; 그렇기에 일단 invoke 를하고 완성된 text를 찾아 넣어주었습니다. make_massage.append({"type": "text", "text": messages[0].content})이런식으로 텍스트를 추출해서 다시 메세지를 구성하는게아니라.이미지 url을 알고있으니 추가로 더 넣어주는 뭔가 그런 세련된 방법이 없었을까요? 분명 HumanMessagePromptTemplate 클래스나 그런것들다루는거라 기초 문법인거 같은데 조금 많이 헤매서 더 좋은 코드가 있을까 싶어 이렇게 질문을 드립니다.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 응용
기초편 이후로 선행되어야하는 지식
안녕하세요 선생님,기초편을 들은 후 응용편으로 넘어왔는데 난이도(?)가 확 올라가서 혹시나 듣기 전에 선행해야 하는 책 또는 지식이 있다면 알려주실 수 있으실까요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강기간 연장 부탁드립니다.
수강기간 연장 부탁드립니다. 감사합니다.
-
미해결TS/JS 디자인 패턴 with Canvas: 제로초에게 제대로 배우기
React 환경에서 클래스형 디자인 패턴 활용에 관한 질문
안녕하세요, React 환경에서 다음 강의를 보며 예제연습중인 수강생입니다. 먼저, 함수형 컴포넌트가 주류가 된 현대 React 생태계에서도 클래스형 디자인 패턴이 많이 활용되는지 궁금합니다. 특히 싱글톤, 팩토리, 빌더와 같은 클래스 기반 디자인 패턴들이 여전히 실무에서 많이 사용되고 있는지 알고 싶습니다. 또한 이러한 클래스 기반의 디자인 패턴 사용 시, React의 재렌더링 측면에서 성능 이슈가 발생하지는 않는지, 실제 개발 경험에서 어떤 장단점이 있는지 궁금합니다.
-
미해결AI 블로그: 콘텐츠 기획부터 완성까지(전자책 PDF 제공)
블로그 질문
강의에서 보여주는 강사님 블로그는 워드프레스 블로그인가요? 구글블로그인가요?
-
해결됨실전! FastAPI 입문
테스트 코드 오류
안녕하세요 테스트 코드 사용 중 오류가 잡히지 않아서 문의 드립니다. 강의에서 설명해주신 것처럼 아래와 같이 코드를 작성했지만 오류가 발생합니다.어떻게 해야 할까요? from fastapi.testclient import TestClient from main import app # api들이 있는 app을 검증할 클라이언트 생성 client = TestClient(app=app) def test_health_check(): # api 요청 response = client.get("/") # 반환 값 검증 assert response.status_code == 200 assert response.json() == {"ping": "pong"}아래는 오류 내용 입니다.(fastapi_orm) C:\Users\User\Desktop\Fast_API(ORM)\code\src>pytest ============================================================================= test session starts ============================================================================= platform win32 -- Python 3.10.16, pytest-8.3.5, pluggy-1.5.0 rootdir: C:\Users\User\Desktop\Fast_API(ORM)\code\src plugins: anyio-4.8.0 collected 0 items / 1 error =================================================================================== ERRORS ==================================================================================== _____________________________________________________________________ ERROR collecting tests/test_main.py _____________________________________________________________________ tests\test_main.py:5: in <module> client = TestClient(app) ..\..\..\..\anaconda3\envs\fastapi_orm\lib\site-packages\starlette\testclient.py:399: in __init__ super().__init__( E TypeError: Client.__init__() got an unexpected keyword argument 'app' =========================================================================== short test summary info =========================================================================== ERROR tests/test_main.py - TypeError: Client.__init__() got an unexpected keyword argument 'app' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ============================================================================== 1 error in 0.86s ===============
-
미해결15일간의 빅데이터 파일럿 프로젝트
하이브쿼리에서 에러가 나요...
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
join 테스트 시 name ='name'으로 찍힙니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] db에는 제대로 name이 저장이 되는데 왜 출력을 하면 name = 'name'으로 찍히는지 모르겠습니다..
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
3.5 강 14:20초 관련 질문입니다.
해당 위 사진은 GitHub에 올려주신 3.5 강 노트북이미지입니다. 강의에서 요약 프롬포트를 summary로 하고 요약 메세지는 response의 content로 저장하는데 혹시 오타인건가요?아니면 MessagesState 클래스는 자동으로 메세지를 저장해준다고 이야기해주신 그거랑 연관이있는걸까요?
-
해결됨350개의 개인 앱을 만들어 월급의 7배 수익을 달성한 방법
낚시앱 관련건에 대하여
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!마크다운, 단축키를 이용해서 편리하게 글을 작성할 수 있어요.먼저 유사한 질문이 있었는지 검색해보세요.서로 예의를 지키며 존중하는 문화를 만들어가요.잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 좀븨님 영상 잘 보고 있습니다.영상 내용중 궁금증이 생겨 질문을 작성하게 되었습니다.낚시 앱을 만들었고 네이버 크롤링을 해서 여러명의 사람들에게 메일을 뿌려서 2명이랑 계약을 체결시켰다고 말씀해주셨는데요.계약할때 광고주입장에서 내 광고가 얼마나(빈도) 어떻게 표시되는지 등 협의하고 금액이 산정이됬을거잖아요.그런데 메일로 뿌렸을때 광고요청을 하는 사람들이 많을수록 한 광고주의 광고는 적게 나오게 될거잖아요 ?'이부분은 어떻게 계산을하시고 계약하신건지 몹시궁금합니다.
-
미해결15일간의 빅데이터 파일럿 프로젝트
하이브쿼리에서 에러
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
모델링및평가(분류) 17:30초 지점 질문드립니다.
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요모델링및평가(분류) 17:30초 지점에서검증용 데이터 분리를 설명하기에 앞서그 위에 문제2가 있는데문제2가 검증용 데이터분리와 연관되나요.즉, 검증용 데이터분리는 문제1에 연장인지 문제2에 해당하는지를 묻습니다.
-
해결됨코드로 배우는 React 19 with 스프링부트 API서버
스프링부트와 리액트 연동관련해서
스프링부트와 리액트를 연동하는 강의를 본격적으로 듣기전에 궁금한게 있어서 글을 남깁니다.스프링부트로만 작업을 할경우 저희에겐 타임리프라는 SSR 기술이있어서 서버의 데이터도 쉽게 웹페이지에 전달할 수 있었습니다. 하지만 리액트의 경우 타입스크립트를 기반으로한 next.js 기술이 있는데 이 기술은 node.js를 상정하고 만들어진 기술인 것 같습니다. 이때 next.js 기술이 스프링부트의 타임리프를 대체할만한 SSR기술인지 아니면 next.js 같은 SSR기술이없어도 서버의 데이터를 쉽게 웹페이지에 전송할 수 있는지 궁금합니다. 기술이 필요하다면 어떤 종류의 기술을 익히는 것이 좋을지 알려주시면 너무 감사드립니다.
-
미해결ITSM(IT 서비스 관리)을 위한 ITIL 4 Foundation 이해하기
학습자료(도서) 추천
안녕하세요.'ITSM(IT 서비스 관리)을 위한 ITIL 4 Foundation 이해하기' 강의 학습을 위한 추천 자료(도서)가 있을까요? 앞에 질의/응답 내용을 보니 요약서(?)만 PDF로 제공한다하여 별도로 학습자료를 준비해야할것 같아서요. 추천바랍니다.
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
타입스크립트/next.js 추가학습 관련해서 문의 드립니다
최근 취업시장이 리액트와 스프링부트나 넥스트같은 백엔드 기술을 모두 할줄아는 사람을 뽑는 추세가 강해져 저도 리액트 관련기술을 익히고자 강의를 신청했고 현재 수강중입니다. 백엔드쪽은 스프링부트로 확고히 가져가서 만약 이후에 둘을 연동할때 DB의 데이터를 가져오거나 서버와 연동해서 데이터를 가져오거나 통신할때 next.js 기술이 필수인지 아닌지 궁금해서 질문 남깁니다.필수가 아니라면 도움이 되는 지 궁금합니다. 제가 강사님 next,js 소개글을 봤는데 node.js가 필요기술에 있어서 node.js만을 위한 ssr기술인지 궁금합니다.
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
강의자료
-요구사항 분석 챕터에서 중요한 부분 정리-통합 구현 등등 동영상아니고 문서형태 강의인데이 파일들은 다운로드가 안되나요?
-
해결됨
POWER BI 실습 자료 다운로드는 어디에서 받을 수 있나요?
안녕하세요?무료로 진행하는 power bi 실습 자료는 어디에서 다운로드 받을 수 있나요?[power bi] 1강. 데이터 가져오기 및 변환...실습 자료[power bi] 2강. 지리정보 기각화 및 개체 활용...실습 자료[power bi] 3강. 소셜 데이터 시각화 분석(수업자료 -> 다운로드 받을려고 하는데 강의자료 다운로드시 환불 불가합니다..라고 하는데 이것은 무료가 아닌가요?
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
정의한 ex1, ex2 등이 정의되지 않은 문자라고 떠요.
미리 문자로 정의한 내용들이 다 정의되지 않는다고 뜨네요 아래처럼요! 수업자료와 함께 답변 부탁드립니다 ㅠ dpdltmee@gmail.com [디버깅시 오류 내용 ] NameError: name 'ex1' is not defined>>> print(ex2)Traceback (most recent call last): File "<stdin>", line 1, in <module>NameError: name 'ex2' is not defined>>> print(ex3)[입력 함수]x = 50 y = 100 text = 308276567 n = 'Lee' #출력1 ex1 = 'n = %s, s = %s, sum=%d' % (n, text, (x + y)) #%는 찰 쓰지 않는다 print(ex1) #출력2 ex2 = 'n = {n}, s = {s}, sum={sum}'.format(n=n, s=text, sum=x+y) print(ex2)
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
preHandle에서 핸들러를 파라미터로 받을 수 있는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. prehandle에서 아래와 같이 handler를 파라미터로 받을 수 있는 이유가 궁금해서 질문 드립니다. public interface HandlerInterceptor { default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {} 제가 알기로느 디스패처 서블릿에서 요청이 들어왔을 때, 그 요청을 처리할 핸들러를 찾고 그 핸들러를 처리할 수 있는 핸들러 어댑터를 찾아서 핸들러 어댑터를 호출한다고 알고 있는데요. 그런데 preHandle은 핸들러 어댑터를 호출하기 전에 실행되는 것이라고 배웠습니다. 즉 어떤 핸들러 어댑터 / 핸들러가 실행될지 모르는 상황에서 어떻게 preHandle에 handler 정보가 파라미터로 넘어갈 수 있는 것인가요?preHandle이 실행되는 시점에서 이미 어떤 핸들러가 실행될지 결정된 상태인 것인가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-f 질문입니다
우선순위큐 크기가 가방 총 크기보다 클 때만 큐에서 빼는 로직을 작성했는데 왜 틀렸는지 궁금합니다#include<bits/stdc++.h> using namespace std; typedef long long ll; priority_queue<ll> pq; ll n,k,ret; int main(){ cin>>n>>k; pair<ll,ll> v[n]; //jewelry ll bag[k]; for (int i=0;i<n;i++){ cin>>v[i].first>>v[i].second; } for (int i=0;i<k;i++){ cin>>bag[i]; } int idx=0; //bag index sort(v,v+n); sort(bag,bag+k); int idx2=0; while (idx2<n){ while (idx<k && idx2<n){ if (bag[idx]<v[idx2].first) idx++; else{ if (pq.size()==k){ if (v[idx2].second>pq.top()){ pq.pop(); pq.push(v[idx2].second); } }else if (pq.size()<k) pq.push(v[idx2].second); } idx2++; } } while (pq.size()){ ret+=pq.top(); pq.pop(); } cout<<ret;