강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

nathan님의 프로필 이미지
nathan

작성한 질문수

LangGraph를 활용한 AI Agent 개발 (feat. MCP)

2.2 강의 질문

해결된 질문

작성

·

20

0

안녕하세요?

 

2.2 강의에서 강의내용과 노트북에 차이가 있어 질문드립니다. 강의에서는 openai api key를 쓰셨는데, 노트북은 azure로 되어있더라고요

 

  1. 강의대로 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. 강의내용과 노트북을 다르게 하신 이유가 있으실까요?

 

  1. azure openai api key, azure openai endpoint 값들은 chatgpt에 검색해서 나오는 방법으로 받으면 되는건가요? 아니면 다른 방법이 있나요?

답변 2

0

강병진님의 프로필 이미지
강병진
지식공유자

  1. 오류 내용은 전체를 보내주셔야 확인이 가능할 것 같습니다

  2. 모델은 어떤 걸 사용해도 상관 없기 때문에 다양한 케이스들을 보여드리는 게 나을거라고 생각했습니다. 일반적으로 현업에서 근무중이신 분들이 강의를 많이 수강하셔서, OpenAI 뿐만 아니라, Claude, Bedrock, Gemini, AzureOpenAI 등등 다양한 모델들을 사용하는 경우들이 많아서 여러 케이스를 보여드리려고 했습니다.

  3. OpenAI 대신 AzureOpenAI를 사용하시려면 Azure에서 계정을 발급받고, OpenAI API 사용을 위해 추가로 요청을 보내는 등 귀찮은 절차들이 많아서, 만약 개인적으로 수강하신다면 OpenAI나 Claude처럼 클라우드를 거치지 않고 직접 LLM을 활용하시는 걸 추천 드립니다.

0

안녕하세요, 인프런 AI 인턴입니다. nathan님, 질문해 주셔서 감사합니다. 강의 내용과 노트북 설정이 다소 차이가 있는 점이 헷갈리셨을 것이라 생각됩니다. 각 질문에 대해 답변 드리겠습니다.

1. 오류에 대한 설명과 해결 방안

오류 메시지 'NoneType' object is not iterable는 주로 데이터가 None인 경우에 반복 가능한 것으로 처리할 때 발생합니다. 코드와 관련된 몇 가지 가능성 및 점검해야 할 부분을 안내드립니다.

  • 환경 변수 설정: OPENAI_API_KEY가 올바르게 설정되지 않은 경우 예상치 못한 행동을 할 수 있습니다. 노트북의 환경 변수 설정이 잘 이루어졌는지 .env 파일이나 직접 환경 변수를 설정하여 문제가 없도록 점검하세요.

  • select_pages 설정: select_pagesNone인 상태로 존재한다면, 해당 변수에서 무언가를 반복(iterate)하려 시도할 때 오류가 발생할 수 있습니다. 특정 페이지를 지정하거나 조건문 등을 통해 None 상태를 처리하는 검사를 추가해 보세요.

  • zerox 함수 내부 로직: 사용하시는 zerox 함수가 어떤 부분에서 ‘NoneType’ 상태가 발생하는지 확인하고, 그 부분에서의 입력 처리 방식을 한번 더 검토해 보세요.

2. 강의 및 노트북 설정 차이 이유

강의와 노트북의 차이는 다음과 같은 이유에서 발생할 수 있습니다:

  • 업데이트: 강의 작성 후 콘텐츠 업데이트가 있었을 수 있습니다. 강사가 더 나은 방법이나 새로 나온 기능을 반영했을 가능성이 있습니다.

  • API 서비스별 특정 기능 구현: OpenAI와 Azure OpenAI는 API 호출 방식 및 키 설정에 다소 차이가 있을 수 있어, 노트북에서는 이를 고려하여 다른 설정을 제공했을 수 있습니다.

3. Azure OpenAI API 설정 방법

Azure OpenAI 서비스를 사용하려면 다음과 같은 과정이 필요합니다:

  1. Azure Portal: Azure 포털에 로그인하여 Cognitive Services를 추가합니다.
  2. 모델 등록: Azure OpenAI를 사용하기 위해서는 서비스를 생성하여 얻은 키와 엔드포인트를 활용합니다.
  3. Azure Documentation 활용: Azure 제공 문서를 참조하여 서비스와 관련된 구체적인 설정 단계와 API 호출 방법을 확인하세요. 직접 검색의 경우 신뢰할 수 있는 출처의 가이드를 사용하는 것이 중요합니다.

추가적인 유사 문의와 해결 방법

강의 내용과 실습을 통해 이문제를 해결하실 수 있기를 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

nathan님의 프로필 이미지
nathan

작성한 질문수

질문하기