안녕하세요 현재 유료 결제나 외부로 API를 연동하는 것이 사내 보안 규정 상 어려운 상황입니다. 강의에 나온 대로 langchain-core 라이브러리를 활용하는 경우 core 내부에 langsmith를 쓰는 import 가 있어 langsmith를 반드시 사용 해야하는 상황입니다. langsmith가 유료로 변경되면 API 키가 필요한 상황이라 현재 사내에서는 사용이 어려울 것 같습니다. 이런 경우 langsmith를 사용하지 않고 유사하게 기능을 구현하는 방법이 있는지 궁금합니다.
Upstage를 사용해도, exceeded 되었다고 에러나서요. 뭔가 최근에 토큰 제한이 줄었나봐요. 아래와 같이 batch를 주어서 반복문으로 요청후 database.add_documents(batch)하는 방식으로 해야되네요 ㅠㅠ from langchain_pinecone import PineconeVectorStore # 데이터를 처음 저장할 때 index_name = 'tax-upstage-index' # Split documents into smaller chunks text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100) chunked_documents = text_splitter.split_documents(document_list) print(f"Chunked documents length: {len(chunked_documents)}") # Initialize the PineconeVectorStore database = PineconeVectorStore.from_documents( documents=[], # Start with an empty list embedding=embedding, index_name=index_name ) # Upload documents in batches batch_size = 100 for i in range(0, len(chunked_documents), batch_size): print(f'index: {i}, batch size: {batch_size}') batch = chunked_documents[i:i + batch_size] database.add_documents(batch) # Add documents to the existing database
안녕하세요, 강의들으면서 도움 많이 받고 있습니다. Pinecone API를 .env에 적었지만 인식을 못해서 하기와 같이 직접적으로 입력해주었습니다. 그런데 하기 부분에서 또 다시 정의가 안 되었다고 에러가 뜹니다. 어디를 수정해야할까요? 커널?을 껐다켰다하면 되는 분도 있다고 해서 따라해봤는데 잘 안 되는 것 같습니다.ㅠ
안녕하세요, 3.2 RAG구성 강의 중 하기 부분에서 막혔습니다. 조언 요청드립니다. OpenAI 대신, Upstage를 쓰고 싶어 하기와 같이 코드 수정을 하였습니다. 그런데 두번째 캡쳐 그림 부터 에러가 발생합니다. Upstage가 유효하지 않다고 하는 것 같은데... 무엇이 잘못된 것 일까요? 그리고 실습을 위해 OpenAI를 결제해야한다면 얼마정도 하면, 완강하는데 문제없을까요?! Error code: 400 - {'error': {'message': 'The requested model is invalid or no longer supported. You can find the list of available models on our models page ( https://console.upstage.ai/docs/models )', 'type': 'invalid_request_error', 'param': '', 'code': 'invalid_request_body'}}
모두를 위한 대규모 언어 모델 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 가 발생하는 것 같습니다. 어떻게 수정하면 되는지 알려주세요..
Upstage의 모델을 사용하는데 답변의 정확성이 떨어지는 것 같습니다. 아래 캡처 화면을 보면 retriever가 페이지를 가져오는 것 까지는 괜찮아 보이는데, 가져온 문서의 내용을 적용하여 계산하는 것, 그리고 심지어 기본적인 수학적 계산도 종종 오류를 냅니다 ㅜㅜ 더 정확한 답변을 내도록 할 방법이 있을까요?
모두를 위한 대규모 언어 모델 LLM Part 5 - LangGraph로 나만의 AI 에이전트 만들기
안녕하세요.. Plan and Executor 아키텍처에서는 Planning 하고 하나의 태스크를 실행하고, 그리고 다시 Replanning 에이전트를 거치면서 답변을 만들어 가는데, ReWoo 아키텍처에서는 RePlanning 과정에 대한 설명이 없던데.. 그렇다면 ReWoo 아키텍처의 Planner 에이전트 성능이 좋아서 모든 게획을 세운것처럼 보이는데. Plan and Executor의 Planner 에이전트도 모든 계획을 세운 것이 아닌건가요? 둘사이 프롬프트가 달라서 그런건가요? ReWoo에서는 왜 재계획 에이전트가 필요없는건가요?
최신 버전 LangChain 문서의 <How to add chat history> 부분이 강의 영상이랑 대부분 다른 것 같은데 강의 영상 코드 기준으로 진행해도 문제가 없을까요?( https://python.langchain.com/docs/how_to/qa_chat_history_how_to/#chains )
안녕하세요 강사님. 마지막 Streamlit Cloud 배포 후 버전 오류가 발생해서 질문 납깁니다! Python은 3.10.17 버전 사용하고 있습니다. retriever에 pinecone 사용하지 않고 Chroma 를 사용했고요, requirements.txt 에 버전은 langchain-chroma==0.2.3 chromadb==0.6.3 로 들어가 있습니다. 오류는 unsupported version of sqlite3. Chroma requires sqlite3 >= 3.35.0. 라고 뜨는 걸 보면 chromadb 에서 sqlite3 를 사용하고 그 버전 오류인 것 같은데요.. 어떻게 조치를 할지 검색해도 잘 모르겠어서 질문 남깁니다. 감사합니다.
3.2.1 OpenAIEmbeddings 대신 UpstageEmbeddings를 활용하는 방법 으로 실습 예제 하고 있는데요 기존 예제로 하면 chain_type 이 없이 동영상자료에서는 그대로 실행되었는데, 실제로 해보니 chain_type 이 2번째로 와야 하는데 없어서 오류가 뜨더라구요,... 아래는 동영상에서 실행되는 코드 입니다. from langchain.chains import RetrievalQA qa_chain = RetrievalQA.from_chain_type( llm, retriever=database.as_retriever(), chain_type_kwargs={"prompt": prompt} ) TypeError Traceback (most recent call last) Cell In[17], line 3 1 from langchain.chains import RetrievalQA ----> 3 qa_chain = RetrievalQA.from_chain_type( 4 llm, 5 database.as _retriever(), 6 chain_type_kwargs={"prompt":prompt} 7 ) 가 뜨게 되는데 확인해 보니, from langchain.chains import RetrievalQA qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", # 기본 체인 타입 (원하면 "map_reduce"도 가능) retriever=database.as_retriever(), chain_type_kwargs={"prompt": prompt} ) chain_type 이 빠져서 안돌아 가더라구요.. chain_type 을 넣어주면 잘 돌아갑니다. 혹시나 저처럼 헤메이실 분을 위해 올려둡니다. OpenAI 유료결제 안하는 바람에 Upstage로 따라해보려고 하는데... 앞으로의 강의는 OpenAI 로 작성되는것 같아서 유료결제를 해야 할까요...?? 그리고 로컬 Ollama 로 하는 영상도 시간 나시면 올려주시면 좋겠어요~^^ 덕분에 langChain 의 l 도 모르던 제가 따라하게 되네요 좋은 영상 감사합니다.
안녕하세요 강사님 정해져있는 문서를 Rag로 가져오는것이 아닌 openAPI에서 필요한 정보를 호출해서 가져오도록 만들고 싶습니다. openAPI에 requests로 호출해서 데이터를 가져오는 부분까지 완성했습니다. 수업중에 llm에게 dictionary 지정해주는것처럼 openAPI에서 호출한 정보를 rag로 가져오도록 하는 방법을 가르쳐주세요 감사합니다