이경용 대표님 강의안
https://cafe.naver.com/aiclubcafe/1038
LLM - Azure OpenAI API
여러분은 https://chatgpt.com/ 사이트에서 ChatGPT를 이용하거나 OpenAI에서 제공하는 API 서비스를 이용해서 앱을 개발 했다면, 이번 강의에서는 Az...
cafe.naver.com
AuerOpenAI를 실행하여 AI와 관련된 Key, 모델 등을 설정한다.
이제 FastAPI로 배포해보자.
FastAPI 폴더의 main.py를 수정하자.
from fastapi import FastAPI, Form
from pydantic import BaseModel
from fastapi.middleware.cors import CORSMiddleware
import httpx
import json
from openai import AzureOpenAI
app = FastAPI()
# Azure OpenAI 인증 정보
azure_oai_endpoint = "https://azureopenai-flyai.openai.azure.com/" # 실제 endpoint 정보 입력해주자!
azure_oai_key = "KEY" # 실제 인증 Key 입력해주자!
# CORS 설정
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
client = AzureOpenAI(
azure_endpoint = azure_oai_endpoint,
api_key=azure_oai_key,
api_version="2024-08-01-preview"
)
class RequestModel(BaseModel):
model: str
prompt: str
class Message(BaseModel):
message: str
@app.post("/chat")
async def chat(message: Message):
prompt = message.message
# 요청할 URL
url = "http://host.docker.internal:11434/api/generate"
# 요청에 포함할 데이터
data = {
"model": "llama3.2-flyai-v1.0:latest",
"prompt": prompt
}
# 요청 헤더
headers = {
"Content-Type": "application/json"
}
async with httpx.AsyncClient(timeout=20.0) as client:
response = await client.post(url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
# 개별 JSON 객체로 분할
json_objects = response.content.decode().strip().split("\n")
# 각 JSON 객체를 Python 사전으로 변환
data = [json.loads(obj) for obj in json_objects]
res_text = ''
# 변환된 데이터 출력
for item in data:
print(item)
res_text += item['response']
else:
res_text = f"Error Code : {response.status_code}"
return {"reply": res_text}
@app.post("/openai")
async def chat(message: Message):
prompt = message.message
response = client.chat.completions.create(
model="o1-mini",
messages=[
{"role": "user", "content": prompt}
]
)
generated_text = response.choices[0].message.content
return {"reply": generated_text}
localhost:8000/docs 실행