.ipynb
To .py
AI 파트에서 넘겨준 ipynb
파일 Django에 통합하기.
env = environ.Env()
environ.Env.read_env(env_file="/.env")
AZURE_OPENAI_ENDPOINT = env("AZURE_OPENAI_ENDPOINT")
AZURE_OPENAI_API_KEY = env("AZURE_OPENAI_API_KEY")
# Django의 settings.py로 이동
AZURE_OPENAI_ENDPOINT = env("AZURE_OPENAI_ENDPOINT")
AZURE_OPENAI_API_KEY = env("AZURE_OPENAI_API_KEY")
AZURE_OPENAI_API_VERSION = env("AZURE_OPENAI_API_VERSION")
def generate_prompt_with_gpt4o(user_input):
assistant = GPT_CLIENT.beta.assistants.create(
model="gpt-4o-mini",
instructions="""...""",
temperature=0.7,
)
thread = GPT_CLIENT.beta.threads.create()
# ... threads API 사용
def generate_prompt_with_gpt4o(user_input):
response = GPT_CLIENT.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "You are an assistant..."},
{"role": "user", "content": user_input}
],
temperature=0.7,
)
# chat completions API 사용으로 변경
def test_dalle_response(prompt):
result = DALLE_CLIENT.images.generate(
model="dall-e-3",
prompt=prompt,
n=1,
)
def generate_image_with_dalle(prompt):
result = DALLE_CLIENT.images.generate(
model="dall-e-3",
prompt=prompt,
n=1,
)
# 기본 로직은 유지되었지만, Django 모델에 저장하는 부분 추가
# 파일로 저장
def save_image(image_url, prompt):
os.makedirs("images", exist_ok=True)
filename = os.path.join("images", f"{sanitized_filename}.png")
# 데이터베이스에 저장하도록 변경
class AIImageGeneration(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
prompt = models.TextField()
generated_prompt = models.TextField()
image_url = models.URLField(max_length=1000)
def main():
user_input = input("이미지 생성 아이디어를 입력하세요: ")
prompt = generate_prompt_with_gpt4o(user_input)
image_url = generate_image_with_dalle(prompt)
@login_required
def generate_image(request):
if request.method == "POST":
user_input = request.POST.get("prompt", "").strip()
generated_prompt = generate_prompt_with_gpt4o(user_input)
image_url = generate_image_with_dalle(generated_prompt)
# 데이터베이스에 저장
AIImageGeneration.objects.create(
user=request.user,
prompt=user_input,
generated_prompt=generated_prompt,
image_url=image_url
)
app/models.py
에 AI 이미지 생성 모델 통합:
class AIGeneration(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
prompt = models.TextField()
generated_prompt = models.TextField()
image_url = models.URLField(max_length=1000)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ['-created_at']
class Post(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=100)
content = models.TextField()
# ... 기타 필드
@login_required
def generate_ai_image(request):
context = {}
if request.method == "POST":
prompt = request.POST.get("prompt", "").strip()
if prompt:
try:
# GPT로 프롬프트 생성
response = GPT_CLIENT.chat.completions.create(...)
generated_prompt = response.choices[0].message.content.strip()
# DALL-E로 이미지 생성
result = DALLE_CLIENT.images.generate(...)
image_url = result.data[0].url
# 결과 저장
AIGeneration.objects.create(
user=request.user,
prompt=prompt,
generated_prompt=generated_prompt,
image_url=image_url
)
context.update({
'image_url': image_url,
'generated_prompt': generated_prompt
})
except Exception as e:
context['error'] = str(e)
return render(request, "app/generate_image.html", context)
urlpatterns = [
path("", views.index, name="index"),
path("posts/new/", views.create_post, name="create_post"),
path("posts/<int:pk>/", views.post_detail, name="post_detail"),
path("posts/<int:pk>/edit/", views.edit_post, name="edit_post"),
path("posts/<int:pk>/delete/", views.delete_post, name="delete_post"),
path("ai/generate/", views.generate_ai_image, name="generate_ai_image"),
]
{% url %}
태그로 수정ai_playground
의 템플릿을 app
으로 이동