묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
llm의 응답을 특정문자열 내에서만 응답하도록하는법
안녕하세요 강의 잘 듣고있습니다. llm을 이용해 카테고리화된 응답 을 받아야할때 강의에서 사용한 아래와같은 프롬프트를 사용하는데doc_relevance_prompt = hub.pull("langchain-ai/rag-document-relevance") 모델에 따라 제가 원하는 단어가 아닌 문장단위가 나와서 판단 로직이 잘 수행되지않더라고요 이런 경우 프롬프트 말고 다른 해결 책이 있을까요? 특정 문자열이 아니면 irrelevant 이런 식으로 처리하려고해도 대부분의 질문이 관련 없다 라고만 판단을 해서 제대로된 기능 사용이 힘드네요
-
미해결LangGraph를 활용한 AI Agent 개발 (feat. MCP)
2-7 병렬 처리를 통한 효율 개선 파트 chain 구축
아래 처럼 hub.pull을 사용하면 에러가 발생해서, https://smith.langchain.com/hub/rlm/rag-prompt 해당 링크의 문구를 그대로 사용하고 있는 것 외에는 전부 동일한 코드인데, tax_base_retrieval_chain을 구축할 때 에러가 발생합니다hub.pull('rlm/rag-prompt')
-
해결됨한시간으로 끝내는 LangChain 기본기
Template 사용에 관해 질문 있습니다.
안녕하세요. 수강 듣던 중 궁금한게 생겨 질문드립니다.강의 중간에 PromptTemplate와 ChatPromptTempate를 모두 사용하셨는데, 특정 목적에만 사용하는 Template이 있는건가요?아니면 두 Template의 성능 차이가 있는걸까요?
-
미해결Prompt Engineering: 완벽 가이드
reddit data 는 어디있을까요?
수업 자료에는 code, review_criteria이 두개만 있어요.이 강의에서 사용하는 레딧 자료가 어디있는지 모르겠네요.
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
openai 429 에러 문의
위와 같이 충전도 했고 사용한 current usage도 0 달러인데 429 에러가 뜹니다. 혹시 이유가 뭘까요?
-
해결됨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 클래스나 그런것들다루는거라 기초 문법인거 같은데 조금 많이 헤매서 더 좋은 코드가 있을까 싶어 이렇게 질문을 드립니다.
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
3.5 강 14:20초 관련 질문입니다.
해당 위 사진은 GitHub에 올려주신 3.5 강 노트북이미지입니다. 강의에서 요약 프롬포트를 summary로 하고 요약 메세지는 response의 content로 저장하는데 혹시 오타인건가요?아니면 MessagesState 클래스는 자동으로 메세지를 저장해준다고 이야기해주신 그거랑 연관이있는걸까요?
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
langgraph를 streamlit과 연동(?)하는 과정에서 질문이 있습니다.
안녕하세요! section3을 듣고나서 제 나름대로 langgraph를 만들고 이걸.. streamlit으로 구현을 해봤는데요. 이번 강의에서와 같이 chat-history를 checkpointer를 사용해서 연결하려고하면 Checkpointer requires one or more of the following 'configurable' keys: ['thread_id', 'checkpoint_ns', 'checkpoint_id'] 이런 오류가 뜨고 있는 상태입니다. chat-gpt와 구글 서치를 통해 나름대로 아래와 같이 해보았지만(간략하게 서술하면 CustomMememorySaver라는 클라스를 통해 ['thread_id', 'checkpoint_ns', 'checkpoint_id'] 를 checkpointer에 넣는 것입니다.) 이 역시 제대로 동작하지 않습니다.system_message_template = SystemMessagePromptTemplate.from_template("You are a helpful assistant.") chat_prompt = ChatPromptTemplate.from_messages([system_message_template]) # 세션 키 생성 (세션 관리) def generate_session_key(): if 'session_key' not in st.session_state: st.session_state['session_key'] = str(uuid.uuid4()) return st.session_state['session_key'] # Checkpointer 설정 (세션 상태 관리) class CustomMemorySaver(MemorySaver): def __init__(self, session_key): super().__init__() self.session_key = session_key def get_checkpoints(self): # 필요한 체크포인트 정보 반환 return { "thread_id": self.session_key, # session_key를 thread_id로 사용 "checkpoint_ns": "default", # 기본 네임스페이스 "checkpoint_id": f"checkpoint_{self.session_key}" # 고유한 checkpoint_id } # 시스템 메시지와 메모리 체크포인터 설정 session_key = generate_session_key() checkpointer = CustomMemorySaver(session_key=session_key) # LangGraph만을 사용한 에이전트 생성 (tools는 빈 리스트로 설정) agent_executor = create_react_agent(llm, [], state_modifier=chat_prompt, checkpointer=checkpointer)또, 예전 langchain 강의에서 알려주셨던 chat-with-history 코드를 활용하려는 시도도 해봤는데요. (가독성을 위해 프롬프트 내용이나 중간 중간 선언 내용은 지웠습니다.) 하지만 이거 같은 경우에는 langgraph를 사용하는 입장에서, rag-chain을 ai_response에 넣는 과정을 어떻게 처리해야될지 모르겠어서 중도포기한 상태입니다. ㅠㅠ;; store = {} def get_session_history(session_id: str) -> BaseChatMessageHistory: if session_id not in store: store[session_id] = ChatMessageHistory() return store[session_id] def get_rag_chain(): llm = get_llm() retriever = get_retriever() contextualize_q_system_prompt = ("생략") contextualize_q_prompt = "생략" history_aware_retriever = create_history_aware_retriever( llm, retriever, contextualize_q_prompt ) system_prompt = ("생략") qa_prompt = ChatPromptTemplate.from_messages("생략") question_answer_chain = create_stuff_documents_chain(llm, qa_prompt) rag_chain = create_retrieval_chain(history_aware_retriever, question_answer_chain) conversational_rag_chain = RunnableWithMessageHistory( "생략" history_messages_key="chat_history", output_messages_key="answer", ).pick('answer') return conversational_rag_chain def get_ai_response(user_message): rag_chain = get_rag_chain() loan_chain ={"input": dictionary_chain} | rag_chain ai_message = loan_chain.stream( { "question": user_message }, config={ "configurable": {"session_id": "abc123"} }, ) return ai_message결론적으로 말하면 langgraph로 어떻게해야 langchain에서 했던것처럼 streamlit상에서 구현할 수 있을지 궁금합니다! 질문 읽어주셔서 감사합니다!
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
UpstageEmbeddings 를 사용하여 RAG를 구성하던 도중 Error...
import os # 기존 환경 변수 확인 print("OPENAI_API_KEY:", os.getenv("OPENAI_API_KEY")) print("UPSTAGE_API_KEY:", os.getenv("UPSTAGE_API_KEY")) # OpenAI API 키 삭제 (Upstage API만 사용하도록 설정) if "OPENAI_API_KEY" in os.environ: del os.environ["OPENAI_API_KEY"] # Upstage API 키 직접 설정 os.environ["UPSTAGE_API_KEY"] = "up_kh9mX7uA129qfCuzmcf6COX4HUabn"처음에 OpenAI API 키랑 Upstage API 키 간의 충돌이 일어났구나 싶어, 위와 같이 코드를 작성한 후에 다시 크로마 DB에 임베딩을 시켜보는 데도 계속 똑같습니다 ㅠㅠ 심지어 API 키를 계속 새로 발급받아도 이래요 ㅠㅠ어디가 문제일까요...?
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
[section 14 / [실습] 직접 만든 CNN 모델과 ResNet, VGGNet을 활용한 CV 프로젝트] transforms.Normalize 질문
cifar10 데이터셋에 대하여 Normalize를 적용하는 이유가 궁금합니다.mean과 std 리스트에 들어있는 값의 의미가 무엇인가요?이미 ToTensor()로 0~1값의 스케일링 된 데이터를, 표준화까지 적용하여 평균0, 분산 1로 만드는데 장점이 있는건가요??normalize = transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) def get_dataloaders(): train_data = torchvision.datasets.CIFAR10( root="../.cache", train=True, download=True, transform=transforms.Compose([torchvision.transforms.ToTensor(), normalize]), )
-
미해결모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
Llama vision 이미지 해상도
안녕하세요, 지금 한번 llama3.2 vision을 다른 이미지와 테스트를 해보고 있는데, vision이 인식하기 위한 최소 이미지 사이즈나 해상도가 있나요? https://ollama.com/blog/llama3.2-vision이 링크를 통해서 제 로컬에서 실험해보고 있는데, added image는 되는데, 그 이후 답변을 안해 줘서, 혹시 다른 이미지로도 테스트 가능하신지 궁금합니다!
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
2.4강~2.7강 관련 질문이 있습니다.
안녕하세요 매번 빠른 답변 감사합니다. 복습을 하는중에 궁금한게 생겨서 질문을 남깁니다! 2.4강에서 1) 왜 check_helpfulness는 check_hallucination, check_doc_relevance와 다르게 하나의 노드로 선언되나요? 2) check_doc_relevance를 할때는 return하는것을 Literal['relevant', 'irrelevant'] 이렇게 정해주고, 실제로 리턴도 if response['Score'] == 1: return 'relevant' return 'irrelevant'이렇게 했잖아요. check_helpfulness 노드 만들때도 그렇구요. 근데 왜 check_hallucination을 할때는 왜 Literal['hallucinated', 'not hallucinated']:이렇게 적었음에도 왜 하지 않고 return hallucination_chain.invoke({'student_answer': answer, 'documents': context}) 까지만 해도 되는건가요? 3) 2.6~2.7강에서도 궁금한 부분이 있는데요. router prompt를 보면 if you think you need to search the web to answer the question use 'web_search'라고 나오는데, web_seach를 하는 것이 사실 tax_income_vector_store에 없는 정보잖아요. (이게 2.6강 이 뒤로는 2.7강 관련입니다.)단순 tax_income과 관련 없는(=역삼 근처 맛집)것 과는 다른 대통령령으로 정한 공정시장가액 을 구해야 할 때(=질문이 tax_income과 관련 있지만, vector_store에는 정보가 없는 경우) web_search를 하게 만드는 것이 가능한가요? 2.7강에서는 공정시장가액이 없다< 라는 사실을 알아서 코드를 짤 때 공정시장가액만 웹서치 해오는 걸 구현했는데 이런 서치를 해야되는 과정이 비단 공정시장가액 뿐 아니라 다른 것들도 있을것 같거든요?? 이걸 ai가 알아서 판단하게 만드는것도 이론상은 가능할 것 같아서요. 그렇담 어떻게 구현하는지 궁금합니다. 적다보니 ..기네요 읽어주셔서 감사합니다.
-
미해결RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)
faiss-gpu 설치법 질문입니다.
pip install faiss-gpu 커맨드 입력하면 아래와 같은 오류가 뜹니다. (langchain) <username>:~/projects/langchain$ pip install faiss-gpuERROR: Could not find a version that satisfies the requirement faiss-gpu (from versions: none)ERROR: No matching distribution found for faiss-gpu
-
미해결모두를 위한 대규모 언어 모델 LLM Part 3 - 구글 제미나이(Google Gemini) API, OpenAI API와 젬마(Gemma)로 AI 어플리케이션 만들기
에러 발생
이러한 에러가 발생합니다.
-
미해결모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 2 - 랭체인(LangChain)으로 나만의 ChatGPT 만들기
검증 방법 질문입니다.
프롬프트 작성 및 두번의 llm에다가 Query 결과문을 넣어서 한번 더 검증하게 한다는 것인가요 ?
-
해결됨딥러닝 이론 + PyTorch 실무 완전 정복
[section 14 / VGGNet ] receptive filed 질문
안녕하세요. 항상 강의 잘 듣고 있습니다. 감사합니다. 다름이 아니라 section14. vggnet 강의를 듣던 중 receptive field에 대해 의문이 생겨 질문하게 되었습니다. 교안 82페이지에 (3,3) conv layer 2개를 쌓으면 receptive field가 (5,5)가 아니라 왜 (7,7)이 되는 것인지 궁금합니다.(1,1) 픽셀이 직전 에 (3,3)에서 왔고, (3,3)은 직전 (5,5)에서 convolution 연산으로 오는 것이 아닌가요?
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
dictionary 데이터 관련 질문있습니다!
안녕하세요 dictionary chain을 구성할때 궁금한 점이 있습니다. dictionary = ["사람을 나타내는 표현 -> 거주자"] 으로 수업중에 진행한 것을 봤습니다! 다만 다양한 단어 사전이 필요할 수 있을 것 같은데 구조를 어떻게 하면 좋을지 고민되어 여쭤봅니다.1. 리스트 형태dictionary = [ "사람 -> 거주자", "학생 -> 학습자", "교수 -> 강사", "회사원 -> 직장인" ]2. 완전 비정형 텍스트dictionary = """ 사람 -> 거주자, 학생 -> 학습자, 교수 -> 강사, 회사원 -> 직장인 """혹시 이럴때도 팁같은게 좀 있을까요??
-
해결됨LangGraph를 활용한 AI Agent 개발 (feat. MCP)
임베딩 데이터에대해 질문이 있습니다.
안녕하세요 강의 너무 잘보고있습니다. 문의 답변 챗봇을 구축하려고 하는데 임베딩 데이터 관련해서 질문이 있습니다.아래 두가지 방법중 고민인데요[Question]: {질문}, [Answer]: {답변}질문과 답변을 같이 임베딩[Question]: {질문} 질문만 임베딩 하고 답변은 meta 데이터에 넣기 보통 어떤 형식으로 임베딩하는게 검색이 잘되고 좋은 응답을 만드는지 궁금합니다.
-
미해결모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
API 특정 짓는 법
안녕하세요 선생님1. GPT가 질문에 대한 적절한 답변을 하기 위해서 API 호출하는 것이 어떤 원리인지 잘 모르겠습니다.2. 정해진 API 만 사용할 수 있도록 정하는 방법이 있다면 무엇인가요? (예. 기상청 데이터만 사용하고 싶을 때)
-
해결됨RAG를 활용한 LLM Application 개발 (feat. LangChain)
파인콘 연결이 안됩니다. ㅠ
3.4강을 보고 따라하고있습니다. 현재 test.ipynb에서 진행중이고 .env는 api key가 입력되어있습니다.먼저 첫 셀을 실행하고 두 번째 셀로 연결을 하려는데 잘 되지 않네요. ㅠ 오류메세지는 다음과 같습니다. 파인콘 API키도 재발급 받아봤고pc = Pinecone(api_key="pinecone_api_key")이런식으로 직접 문자열로도 해봤는데 안되네요 ㅠㅠ 왜이런걸까요? 일단 API 키 인식을 못하길래직접 이렇게 넣었는데도 안되네요; ㅠ 왜이런걸까요? 혹시 해결에 도움될 만한 추가 필요 자료가 있다면 이야기하시면 더 드리도록하겠습니다. ( 환경 pip 라던가.. ) 아래 공식 사이트에 가서https://python.langchain.com/docs/integrations/vectorstores/pinecone/직접적인 환경변수를 넣으면 잘됩니다. 어째서일까요? 해결 :커널을 재시작하니 잘됩니다. 모두들 기본에 충실하시길;;