모두를 위한 대규모 언어 모델 LLM Part 5 - LangGraph로 나만의 AI 에이전트 만들기
안녕하세요.. 수업노트에 있는 storm colab 파일을 따라 하는데.. import json from langchain_core.runnables import RunnableConfig async def gen_answer( state: InterviewState, config: Optional[RunnableConfig] = None, name: str = "Subject_Matter_Expert", max_str_len: int = 15000, ): swapped_state = swap_roles(state, name) # Convert all other AI messages # 쿼리 생성 queries = await gen_queries_chain.ainvoke(swapped_state) query_results = await search_engine.abatch( queries["parsed"].queries, config, return_exceptions=True ) successful_results = [ res for res in query_results if not isinstance(res, Exception) ] # url와 콘텐츠 추출 all_query_results = { res["url"]: res["content"] for results in successful_results for res in results } # We could be more precise about handling max token length if we wanted to here dumped = json.dumps(all_query_results)[:max_str_len] ai_message: AIMessage = queries["raw"] tool_call = queries["raw"].tool_calls[0] tool_id = tool_call["id"] tool_message = ToolMessage(tool_call_id=tool_id, content=dumped) swapped_state["messages"].extend([ai_message, tool_message]) # Only update the shared state with the final answer to avoid # polluting the dialogue history with intermediate messages generated = await gen_answer_chain.ainvoke(swapped_state) cited_urls = set(generated["parsed"].cited_urls) # Save the retrieved information to a the shared state for future reference cited_references = {k: v for k, v in all_query_results.items() if k in cited_urls} formatted_message = AIMessage(name=name, content=generated["parsed"].as_str) return {"messages": [formatted_message], "references": cited_references} 이 부분에서 궁금한 것이 생겼습니다. 중간에 tool_call = queries["raw"].tool_calls[0] tool_id = tool_call["id"] 중간에 tool_calls 관련 정보를 호출하는데..그럴려면 gen_queries_chain 이 체인에 tool_bind된 llm이 사용되어야 하는 것 아닌가요? duckduckgo 관련 search_engine함수를 @tool을 이용해서 tool로 선언한 것 같은데.. 해당 퉁을 llm에 바인딩하는 것을 못보아서.. tool index 부분에서 Cell In[46], line 30, in gen_answer(state, config, name, max_str_len) 28 dumped = json.dumps(all_query_results)[:max_str_len] 29 ai_message: AIMessage = queries["raw"] ---> 30 tool_call = queries["raw"].tool_calls[0] 31 tool_id = tool_call["id"] 32 tool_message = ToolMessage(tool_call_id=tool_id, content=dumped) IndexError: list index out of range 가 발생하는 것 같습니다. 어떻게 수정하면 되는지 알려주세요..
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요 먼저 유사한 질문이 있었는지 검색해보세요 안녕하세요, 먼저 항상 좋은 강의 제공해 주셔서 감사합니다 지난 연말 탈락이후 재응시예정이었지만 최근 갑작스럽게 목디스크가 있단 진단을 받아 통증이 심해지면서 강의를 제대로 소화하기 어려운 상황이 되었습니다. 이에, 혹시 인강 수강 기간을 2개월만 연장해주실 수 있을지 정중히 부탁드립니다. 몸이 회복되면 하반기 시험을 목표로 다시 차근차근 준비할 계획입니다. 너무 개인적인 사정이라 죄송하지만, 간곡히 요청드립니다. 긍정적인 검토 부탁드립니다. 감사합니다. 혹시몰라 메일주소 남깁니다 jswook93@gmail.com
07:26에서 "f1 스코어로 예측할때는 확률 값이 아니라 클래스로 나누기 때문에 predict로 예측해야한다" 라고 말씀해주셨는데 이 부분에서 질문이 생겼습니다! 1) 확률 값으로 예측하는건 평가지표 중 roc_auc_score 뿐인지 2) 만약 평가 지표로 roc_auc로 한다고 문제에 출제되었으면 제출 예시로 확률 값이 아닌 클래스 값으로 나온 것 처럼 보여도 predict_proba ()로 예측해도 되는지 궁금합니다! -> 제가 알고있기론 roc_auc_score가 평가 지표여도 predict()를 사용해서 해도 되지만, 평가 성능이 차이가 나는 걸로 알고 있는데 제대로 알고 있는건지 여쭙습니다!!
예전부터 리턴에 대해 모호하게 이해하고 있어서 질문드립니다. # 함수 정의 (리턴 값) def plus(x, y): result = x+y return result # 함수 호출 a = plus(2,3) print(a) 이러면 값이 5가 나오는데 # 함수 정의 (리턴 값) def plus(x, y): result = x+y # 함수 호출 a = plus(2,3) print(a) 이러면 값이 NONE이 나오는 이유가 리턴이 없어서 왜 a = 2+3으로 받아들이지 못하는 건지 궁금합니다. # 함수 정의 (리턴 값) def plus(x, y): result = x+y result # 함수 호출 a = plus(2,3) print(a) 이 값 또한 NONE으로 출력되는데 두번째 함수 호출 코드에서 plus(2,3) 이니까 plus(2,3) = result 이고 result 는 5이니깐 a = 5이므로 print (a) 는 5가 되어야 하는게 아닌가요? return이 없으면 함수에 무엇을 대입하든 변수에 값이 저장되지 않는 느낌이네요?
선생님~ 커서에서 코드 수정하고 연동된 깃허브에 커밋도 시켜주었는데, 버셀에 최종 마스터가 뜨지 않는데 왜 이런걸까요? ㅠㅠ 어제 저녁 이것땀시 너무 #&!@ 해서 ㅠㅠ 커서에 '최종1'이 마스터로 된 화면이고요.. 깃허브에 최종1이 master 로 되어 있는것 같구요? 근데 버셀에서는 그전단계로만 되어 있어서요 ㅠㅠ (근데 사실 이것도 어제 저녁에 계속 마스터로 안되 있어서 버셀에 있는 프로젝트 계속 지우면서 최신 깃허브 가져온거거든요?) 깃허브에 버셀에 제대로 업뎃이 안되는데, 어디부터 봐야할지 좀 도움 좀 주세요~