add a prompt library
This commit is contained in:
parent
444c16abe6
commit
54ddde2820
@ -5,7 +5,7 @@ from openai import AsyncOpenAI
|
|||||||
MODEL_GPT_4_VISION = "gpt-4-vision-preview"
|
MODEL_GPT_4_VISION = "gpt-4-vision-preview"
|
||||||
|
|
||||||
# TODO: Remove after testing
|
# TODO: Remove after testing
|
||||||
MODEL_GPT_4_VISION = "gpt-3.5-turbo-0613"
|
MODEL_GPT_4_VISION = "gpt-3.5-turbo-1106"
|
||||||
|
|
||||||
client = AsyncOpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
|
client = AsyncOpenAI(api_key=os.environ.get("OPENAI_API_KEY"))
|
||||||
|
|
||||||
@ -18,8 +18,7 @@ async def stream_openai_response(messages, callback: Callable[[str], Awaitable[N
|
|||||||
|
|
||||||
# Add 'max_tokens' only if the model is a GPT4 vision model
|
# Add 'max_tokens' only if the model is a GPT4 vision model
|
||||||
if model == MODEL_GPT_4_VISION:
|
if model == MODEL_GPT_4_VISION:
|
||||||
# TODO: Remove after testing
|
params["max_tokens"] = 4096
|
||||||
# params["max_tokens"] = 4096
|
|
||||||
params["temperature"] = 0
|
params["temperature"] = 0
|
||||||
|
|
||||||
completion = await client.chat.completions.create(**params)
|
completion = await client.chat.completions.create(**params)
|
||||||
|
|||||||
@ -1,6 +1,8 @@
|
|||||||
# Load environment variables first
|
# Load environment variables first
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
from prompts import assemble_prompt
|
||||||
|
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
|
|
||||||
|
|
||||||
@ -19,10 +21,10 @@ async def stream_code_test(websocket: WebSocket):
|
|||||||
async def process_chunk(content):
|
async def process_chunk(content):
|
||||||
await websocket.send_json({"type": "chunk", "value": content})
|
await websocket.send_json({"type": "chunk", "value": content})
|
||||||
|
|
||||||
|
messages = assemble_prompt("")
|
||||||
|
print(messages)
|
||||||
|
|
||||||
await stream_openai_response(
|
await stream_openai_response(
|
||||||
[
|
messages,
|
||||||
{"role": "system", "content": "Build a webapp"},
|
|
||||||
{"role": "user", "content": "Build a hello world app"},
|
|
||||||
],
|
|
||||||
lambda x: process_chunk(x),
|
lambda x: process_chunk(x),
|
||||||
)
|
)
|
||||||
|
|||||||
32
backend/prompts.py
Normal file
32
backend/prompts.py
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
SYSTEM_PROMPT = """
|
||||||
|
You are an expert Tailwind developer
|
||||||
|
You take screenshots of a reference web page from the user, and then build single page apps
|
||||||
|
using Tailwind, HTML and JS.
|
||||||
|
You might also be given a screenshot of a web page that you have already built, and asked to
|
||||||
|
update it to look more like the reference image.
|
||||||
|
|
||||||
|
- Make sure the app looks exactly like the screenshot.
|
||||||
|
- Pay close attention to background color, text color, font size, font family,
|
||||||
|
padding, margin, border, etc. Match the colors and sizes exactly.
|
||||||
|
- Use the exact text from the screenshot.
|
||||||
|
- Do not add comments in the code such as "<!-- Add other navigation links as needed -->" and "<!-- ... other news items ... -->" in place of writing the full code. WRITE THE FULL CODE.
|
||||||
|
- Repeat elements as needed to match the screenshot. For example, if there are 15 items, the code should have 15 items. DO NOT LEAVE comments like "<!-- Repeat for each news item -->" or bad things will happen.
|
||||||
|
- For images, use placeholder images from https://placehold.co and include a detailed description of the image in the alt text so that an image generation AI can generate the image later.
|
||||||
|
|
||||||
|
In terms of libraries,
|
||||||
|
|
||||||
|
- Use this script to include Tailwind:
|
||||||
|
<script src="https://cdn.tailwindcss.com"></script>
|
||||||
|
- You can use Google Fonts
|
||||||
|
- Font Awesome for icons: https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css) as needed.
|
||||||
|
|
||||||
|
Return only the full code in <html></html> tags.
|
||||||
|
Do not include markdown "```" or "```html" at the start or end.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
def assemble_prompt(screenshot_url):
|
||||||
|
return [
|
||||||
|
{"role": "system", "content": SYSTEM_PROMPT},
|
||||||
|
{"role": "user", "content": "Build a hello world app"},
|
||||||
|
]
|
||||||
Loading…
Reference in New Issue
Block a user