본문 바로가기
🌿 Data Engineering/MLOps

Dify에 OpenAI, AWS Bedrock 연동하기 (GPT, Llama, Claude 모델 등록 하기)

by 카프리썬_ 2025. 4. 22.
728x90
728x90

그전까지는 단지 dify가 어떻게 쓰이는지만 알아봤다. 

2025.03.16-Dify 설치 하고 기능 살펴보기, LLM 앱 개발을 위한 오픈 소스 플랫폼

 

Dify 설치 하고 기능 살펴보기, LLM 앱 개발을 위한 오픈 소스 플랫폼

LLM 앱을 뭔가 만들어보고 싶다. 그래서 AWS bedrock도 알아보고 있었는데,Dify는 그 다음으로 눈에 들어온 LLM개발 오픈소스 플랫폼이다.  Dify가 마음에 들었던 이유는 일단 빠르게 해보기 쉬워보였

pearlluck.tistory.com

 

이제 본격적으로 dify사용하기 위해 이제 모델 key를 등록해보려고 한다.

 

Dify에 모델 제공자 등록하기

일단 diy에 접속하면, 왼쪽에 나의 <계정>이 보인다. 

여기에서 설정으로 들어간다.

 

그리고 나면 이제 세팅할수 있는 몇가지 항목이 나온다.

그중에서 <모델 제공자>탭으로 들어간다. 여러가지 모델을 직접 import(?) 할수가 있다. 

나는 dify에서 이것저것 만져보면서 불러오고 싶은 모델들을 이미 임포트(?)해놨다.

그래서 구성예정 모델에 익숙한 모델들이 먼저 보이는데, 여기에서 api-key를 등록해주면 된다! 

 

OpenAI 키 발급 및 Dify 등록

OpenAI 키는 여기에서 발급받으면 된다.

https://platform.openai.com/api-keys

 

처음에는 OpenAI Key를 발급받고, 테스트했을때 이런 에러가 발생했었다. 

openai.RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}

 

다시 카드를 등록하고, 테스트 코드로 확인해보니까 해결되었다. (5달러..)

from openai import OpenAI

my_test_key = "sk-..."

client = OpenAI(api_key=my_test_key)

completion = client.chat.completions.create(
  model="gpt-4o-mini",
  store=True,
  messages=[
    {"role": "user", "content": "write a haiku about ai"}
  ]
)

print(completion.choices[0].message)

 

이제 정상적으로 발급받은 openAI 키를 Dify에 저장한다.

 

그러면 이제 여기에 openAI로 사용할수 있는 모델들이 나온다. 

 

 

 

Bedrock 키 발급 및 Dify 등록

추가적으로 Bedrock도 써보고 싶어서 등록했다. 

AWS가 제공자가 되어서, aws 계정만 있다면 access key랑 secret key로 접근할수 있다.

 

AWS의 IAM(Identity and Access Management)에서 발급받으면 된다.

생성한 user마다 권한과 credentials를 관리할수 있는데, 여기에서 <create access key>로 발급받으면 된다. 

 

아 그리고 사용할 Bedrock의 "리전"도 기입해야한다. 

리전마다 사용할수 있는 모델이 달라서 그런가보다! 나는 가장 많은 모델을 사용할수 있는 버지니아 리전을 선택했다.

 

처음에는 AWS key를 등록했을때, 이런 에러가 발생했었다.

Available Model name을 공백으로 두면, 모델에 접근할수 없다고 에러가 발생한다. 

 

그래서 내가 사용할 모델의 이름을 기입했다. 

Got unKnown model prefix ..  라면서 모델을 못찾았다....

 

 

Bedrock 모델 등록 1 ,  [Model Access]에서 확인 한 모델 이름 (실패)

이게 모델이름이 아닌가?

[Model Access]에서 확인한 모델 이름으로.. <Llama 3.3 70B Instruct> 요렇게... 작성했더니 아니였다..

여기에서 확인할수 있는 이름이 진정한 모델 네임이 아니란 말이야?!

 

알고보니 실제 모델ID를 직접 입력해야했다.

BedRock에서는 접근할수 있는 모델마다 각각 고유의 Model Id를 가지고 있었다. 

 

 

Bedrock 모델 등록 2 , [Model Catalog] 에서 확인한 모델ID (실패)

Bedrock의 [Foundation Models] > [Model Catalog] 에서 직접 특정 모델에 대한 정보를 확인할수 있다.

여기에서 원하는 모델을 검색해서, 내가 사용할 모델에 대한 디테일한 정보를 확인해볼수 있다.

 

어디에서 제공되는지부터 디테일한 모델에 대한 정보가 나와있다. 

아래 모델은 내가 이미 사용하기로 신청해둔 모델인데,

여기에 Model Id가 직접 나와있다. 요걸 Dify의 모델 Name에 입력한다.

그런데 또 실패했다.. 

이번엔 진자 될줄 알았는데....

 

Inference profile의 ID나 ARN으로 다시 입력하라니..? Model ID가 아니였어..?

Error: Error 400: Invocation of model ID meta.llama3-3-70b-instruct-v1:0 with on-demand throughput isn’t supported. Retry your request with the ID or ARN of an inference profile that contains this model.

 

 

Bedrock 모델 등록 3 , [Cross-region inference]에서 확인한 inference profile ID (성공?)

 

그렇다 알고보니 하필 내가 선택한 이 모델은 cross-region-inference를 지원하는 모델이였다.

이렇게 [Inference and Assessment] >  [ Cross-region inference] 탭에서 보면, 크로스 리전을 지원하는 모델들이 나와있다. 

2페이지까지 있으니까..없다고 나처럼 넘기지 마시길..ㅎㅎ

 

마침 내가 사용하려고 하는 모델도 여기에 있었다..!

해당하는 Name을 누르면 이렇게 확인할수 있다. Model을 누르면 Model catalog로 넘어간다. 

이 모델은 Virginia 뿐만 아니라 Ohio, Oregon 에서 제공하는 것이였다! 

드디어 찾았다. 이 모델의 진짜 이름!

이제 크로스 리전을 지원하는 모델의 진짜 이름을 찾았다.

us.meta.llama3-3-70b-instruct-v1:0

 

추가적으로 여기 aws docs에서 어떤 리전에서 제공하는지 확인할수 있다.

혹시나 크로스 리전 이슈로 모델 이름을 찾지 못했다면, 아래 문서에서 프로필 ID를 확인해보시길!!

https://docs.aws.amazon.com/bedrock/latest/userguide/inference-profiles-support.html

 

Supported Regions and models for inference profiles - Amazon Bedrock

Some inference profiles route to different destination Regions depending on the source Region from which you call it. For example, if you call us.anthropic.claude-3-haiku-20240307-v1:0 from US East (Ohio), it can route requests to us-east-1, us-east-2, or

docs.aws.amazon.com

 

그리고 실제로 모델의 profile ID를 확인할수 있다. 내가 찾던 바로 그 이름! 

 

결국 dify에서 사용할 Bedrock 모델을 기입하기 위해서는

단순 모델명, 모델ID가 아니라

cross-region inference에서 확인한 모델의 inference profile ID를 사용해야 됐다!! 

 

앞에 us가 붙었네. 이제 진짜 되겠지?

혹시 몰라서 inference profile ARN도 기입해봤다..

 

Bedrock 모델 등록 4 , [Cross-region inference]에서 확인한 inference profile ID (성공이여야 돼..)

하지만 대 실 패.

대체 왜지? 너무최신 모델이라 그런가ㅜㅜ 이 문서에서 같은 이슈를 확인 할 수 있었다....

저도요..같은 오류가 발생했었어요...

https://qiita.com/nidcode/items/b1f4c46bb16a99df02a1

 

DifyでAmazon Bedrockを使用して簡単なエージェントを作る - Qiita

DifyでAmazon Bedrockを使用して簡単なエージェントを作成します。導入はこちらを参照公式のハンズオン初級編にある、オンライン旅行アシスタントを構築しますLLMモデルにはBedro…

qiita.com

 

결론적으로, 내가 사용하고자 하는 모델인 

 <us.meta.llama3-3-70b-instruct-v1:0> 는 dify에서 bedrock으로 사용할수 있도록

모델을 추가하는데 실패했다......뭔가 dify 버전이슈일것 같은 느낌이 든다..

 

 

Bedrock 모델 등록 5 , [Cross-region inference]에서 확인한 inference profile ID (성공..)

결국 다른 모델을 dify에 넣는건 성공했다.

이 모델 또한 마찬가지로 크로스 리전을 지원하는 모델이였고, 모델의 프로필 ID를 확인해서 기입했다. 

 

허무하게도 이 모델은 한순간에 뚝딱 하고 성공했다. 

 

 

Dify에 모델 제공자 등록 확인

 

아무튼간에 이제 dify(디파이)에서 OpenAI를 통해 gpt 모델들을 사용할수 있고,

AWS bedrock을 통해 접근 허용을 한 모델(claude)도 사용할수 있게 되었다.

 

그리고 각각 모델을 이렇게 온오프 할수도 있어보인다.

 

 

 

 

Dify에서 만들 서비스에 적용해보기

아직 dify로 어떤 서비스를, 어떤 어플리케이션을 만들지는 제대로 구현이 되지 않았지만,

모델 제공자 관련 설정을 완료하기만 해도, 이렇게 디버그 및 미리보기로 확인해볼수 있다.

 

이렇게 LLM 관련 설정 및 개발은 이렇게 되어있다고 이해하고, 

어플리케이션 설계와 기획에 한번 집중해보면 될 것 같다.

 


참고문서

bedrock에서 cross-region

https://docs.aws.amazon.com/bedrock/latest/userguide/cross-region-inference.html 

 

Increase throughput with cross-Region inference - Amazon Bedrock

Some inference profiles route to different destination Regions depending on the source Region from which you call it. For example, if you call us.anthropic.claude-3-haiku-20240307-v1:0 from US East (Ohio), it can route requests to us-east-1, us-east-2, or

docs.aws.amazon.com

 

dify에서 bedrock의 deepseek 모델 intergration 가이드

https://docs.dify.ai/development/models-integration/aws-bedrock-deepseek

 

728x90
반응형