안녕하세요? 2.2 강의에서 강의내용과 노트북에 차이가 있어 질문드립니다. 강의에서는 openai api key를 쓰셨는데, 노트북은 azure로 되어있더라고요 강의대로 openai api key를 써서 했는데 아래와 같은 오류가 납니다. 혹시 어떤 것 때문일까요? from pyzerox import zerox import os import json import asyncio ### 모델 설정 (Vision 모델만 사용) 참고: https://docs.litellm.ai/docs/providers ### ## 일부 모델에 필요할 수 있는 추가 모델 kwargs의 자리 표시자 kwargs = {} ## Vision 모델에 사용할 시스템 프롬프트 custom_system_prompt = None # model = "azure/gpt-4o-2024-11-20" model = "gpt-4o-mini" os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY") # os.environ["AZURE_API_KEY"] = os.getenv("AZURE_OPENAI_API_KEY") # os.environ["AZURE_API_BASE"] = os.getenv("AZURE_OPENAI_ENDPOINT") # os.environ["AZURE_API_VERSION"] = "2024-08-01-preview" # "2023-05-15" # 메인 비동기 진입점을 정의합니다 async def main(): file_path = "./documents/income_tax.pdf" ## 로컬 파일 경로 및 파일 URL 지원 ## 일부 페이지 또는 전체 페이지를 처리 select_pages = None ## 전체는 None, 특정 페이지는 int 또는 list(int) 페이지 번호 (1부터 시작) output_dir = "./documents" ## 통합된 마크다운 파일을 저장할 디렉토리 result = await zerox(file_path=file_path, model=model, output_dir=output_dir, custom_system_prompt=custom_system_prompt, select_pages=select_pages, **kwargs) return result # 메인 함수를 실행합니다: result = asyncio.run(main()) # 마크다운 결과를 출력합니다 print(result) (오류내용 아래부분만) TypeError : 'NoneType' object is not iterable 2. 강의내용과 노트북을 다르게 하신 이유가 있으실까요? azure openai api key, azure openai endpoint 값들은 chatgpt에 검색해서 나오는 방법으로 받으면 되는건가요? 아니면 다른 방법이 있나요?
킬구형 1장 - 작전3에서 아래와 같이 얘기한 부분에 대해 궁금한게 있어. '리스너는 감시와 통제만 담당한다. 실제 시스템 제거 로직( 비즈니스 로직 )은 분리하라. 리스너가 너무 많은 일을 하면 유지보수가 어려워지고 시스템 동작을 파악하기 힘들어진다' 청크 기반 배치 잡이라고 하고 A라는 테이블에서 데이터를 읽어와서 B라는 테이블에 데이터를 삽입하는데 B 테이블에 데이터가 없다면 삽입, 있다면 수정하는 로직이 있어. 이 과정들이 모두 끝나고 마지막으로 B 테이블에 수정 날짜 컬럼이 잡 시작 시간보다 이르다면 A 테이블에 데이터가 없으므로 B 테이블에서 이러한 데이터들을 삭제하려는 로직을 넣는다고 했을 때 아래 궁금증들이 있어. 1. 위 얘기를 토대로 생각해보면 삭제 로직은 청크 기반 스텝 이후 태스크릿과 같은 다음 스텝으로 넣는게 좋은 것 같은데, 실무에서는 해당 잡 전용 리스너를 하나 추가로 만들어서 afterJob 메서드에 배치 상태가 COMPLETED인 경우에 삭제 로직을 실행하도록 하는 방식은 지양하는 편인거야? 전용 리스너를 만들어서 사용하는 경우도 있어? 만약 리스너에 삭제 로직을 넣는다고 했을 때 리스너에서 데이터 삭제 과정 중 오류가 발생한 경우에는 잡이 실패 상태로 종료되는거지? 2번과 같은 맥락인데 리스너에 삭제 로직을 넣는 경우 트랜잭션이 필요할텐데 리스너는 트랜잭션 범위가 어떻게 돼? 스텝에서는 청크 범위, 태스크릿의 반복 범위라고 본 걸로 기억하는데 리스너는 트랜잭션 설정 자체가 안되는건지 리스너 범위 내부에서만 설정되는건지 궁금해.
학습 관련 질문이 있으시면, 상세하게 남겨주세요. 문제가 발생한 부분의 코드를 함께 올려주세요. 수업 영상 몇 분/초 구간인지 알려주세요. 10분 56초 부분에서 prompt 작성코드를 보면 text형식으로 작성되어있고 ChatPromptTemplate을 사용하고 있는데 지난 강의에서는 ChatPromptTemplate 은 message list형식으로 작성한다고 하셨었습니다. ChatPromptTemplate은 그냥 PromptTemplate과 달리 from_template을 사용하면 일반 text 형식 prompt도 처리가 가능한 구조인건가요? 그런거라면 굳이 PromptTemplate을 사용해야하는 이유가 있나요? ChatModel 이 아니라 LLM 일 경우는 ChatPromptTemplate.from_template으로 작성한 prompt는 동작하지 않는 건가요? RAG는 LLM이 아니라 ChatModel을 사용해야하는 이유가 뭔가요? LLM과 ChatModel의 차이를 multi-turn 처리 가능 여부로 보면 될까요?
1. 현재 학습 진도 2-9 2. 어려움을 겪는 부분 window 11 에서 k6 1.3.0 버전을 사용 중 이고 set K6_WEB_DASHBOARD=true k6 run k6-scripts/k6-test.js 로 명령어를 쳐도 테스트 자체는 실행이 되지만 대쉬보드가 나오지 않습니다 3. 시도해보신 내용 처음엔 버전 문젠가 해서 최신 버전으로 수정 했고 5665 포트도 사용 중 은 아닌 것 을 확인 이 외에 체크를 해야 할 것이 있는지 모르겠습니다.
강의에서 "연봉 5천만원 직장인의 소득세는?" 이라는 (직장인이라는)단어를 문서에서 찾지 못해서 응답을 받지 못했다고 하는데 보통 사용자가 질문할때는 정확한 단어를 입력할 확률이 적을것으로 생각되서 이 경우 쿼리에 대해 llm 이나 다른 방법을 통해 알아서 잘(?) 질문에 대해서 llm이 해석 할 수 있도록 해줄 필요가 있을 것 같다고 생각이 드는데, 혹시 이런 경우에 있어서 해결방안이나 팁이 있으신가요?
2025년 2회 코드문제 -1 11:40 이해 안되는게 있는데 자식에서 재정의 하면 자식에서 실행되어야 하는거 아닌가요? 순수 부모여서그런건가요? 또한 만약 Parent ref= new 자식이였다면 4P가 되는건가요? 스테틱이면 부모꺼 출력으로 알고 있어서 혹시 제가 잘못 알고 있는부분있으면 추가적으로 알려주세요 ㅜ
안녕하세요 9분 48초 인터페이스와 예외처리 질문입니다. 헷갈리는 부분이 있어 질문이 두개가 있습니다. run(f) 는 런메소드 내부에서 f.app3이 호출 되었지만 f기 때문에 람다함수로 가서 리턴값이 7로 나오는건가요? 만약 run(3)이었다면 리턴값 3이 정답이 되나요? -질문 1 run(n->n+9) 에선 f가 아니여서 f. app3 실행후 리턴값 3->3+9 = 12출력 하고 끝나는건가요? 그래서 통째로 계산하여 (2번) run( (1번) n->n+9) 1번 풀고 run(12)를 다시 돌리지 않고 끝내는건가요? -질문 2 답변 기다리겠습니다 감사합니다 !
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] IO 기본 2 문자 다루기1 시작 pdf파일, ReaderWriterMainV1 코드에서 마지막에 System.out.println("read bytes: " + Arrays.toString( writeBytes )); readBytes가 아닌 writeBytes가 들어가 있습니다