Generative AI with Vertex AI: Best Practices in Prompt Design
Mohammad Jazim
AI Product Owner at DoctusTech-[Building a portfolio of AI Data Products]
Generative AI is transforming how we approach natural language processing and content creation. Google Cloud’s Vertex AI platform offers robust tools for leveraging generative AI models, with a strong emphasis on effective prompt design. This article explores how to use Vertex AI for generative AI tasks and provides best practices for crafting effective prompts.
Prerequisites for Using Vertex AI
Before diving into Vertex AI, ensure the following:
Step 1: Setting Up Your Environment
Step 2: Designing Effective Prompts
Prompt design is crucial to obtaining accurate and meaningful responses from generative AI models. Below are guidelines and examples to help craft better prompts.
2.1 Be Concise
Minimize noise to reduce misinterpretation by the model.
prompt = "What is a good name for a flower shop specializing in dried bouquets?"
print(generation_model.predict(prompt=prompt, max_output_tokens=256).text)
2.2 Be Specific and Well-Defined
Clearly define your requirements to ensure the model’s response aligns with your expectations.
prompt = "List unique characteristics of Earth compared to other planets."
print(generation_model.predict(prompt=prompt, max_output_tokens=256).text)
2.3 Ask One Task at a Time
Simplify the prompt to focus on a single task, avoiding multi-faceted queries that may confuse the model.
prompt = "What’s the best method to boil water?"
print(generation_model.predict(prompt=prompt, max_output_tokens=256).text)
2.4 Address Hallucinations
Generative models can produce factually incorrect information (“hallucinations”). Prevent inappropriate responses by incorporating specific constraints or context into the prompt.
Example using a DARE (Determine Appropriate Response) prompt:
from vertexai.language_models import ChatModel
chat_model = ChatModel.from_pretrained("chat-bison@002")
chat = chat_model.start_chat()
dare_prompt = """Before answering a question, ensure it aligns with your mission.
If not, respond: 'Sorry, I can’t answer that question.'"""
response = chat.send_message(
"""
Hello! You are an AI chatbot for a travel website.
Your mission is to assist travelers with relevant queries.
{dare_prompt}
"""
)
print(response)
This approach ensures the AI adheres to predefined guidelines, reducing irrelevant or incorrect outputs.
Step 3: Enhance Response Quality
3.1 Include Examples
In-context examples can guide the model toward the desired output. Providing one or more examples demonstrates the expected response format.
prompt = "Decide whether a Tweet's sentiment is positive, neutral, or negative.
Tweet: I loved the new YouTube video you made!
Sentiment:"
print(generation_model.predict(prompt=prompt, max_output_tokens=256).text)
prompt = """Decide whether a Tweet's sentiment is positive, neutral, or negative.
Tweet: I loved the new YouTube video you made!
Sentiment: positive
Tweet: That was awful. Super boring.
Sentiment:"""
print(generation_model.predict(prompt=prompt, max_output_tokens=256).text)
prompt = """Decide whether a Tweet's sentiment is positive, neutral, or negative.
Tweet: I loved the new YouTube video you made!
Sentiment: positive
Tweet: That was awful. Super boring.
Sentiment: negative
Tweet: It surprised me with its originality. You should watch it.
Sentiment:"""
print(generation_model.predict(prompt=prompt, max_output_tokens=256).text)
Providing multiple examples helps the model infer patterns and reduces variability in responses.
3.2 Turn Generative Tasks into Classification Tasks
Converting open-ended tasks into choice-based prompts reduces output variability and improves consistency.
prompt = "Suggest a programming activity for a high school student."
print(generation_model.predict(prompt=prompt, max_output_tokens=256).text)
prompt = """Which activity is most suitable for a high school student and why:
a) Learn Python
b) Learn JavaScript
c) Learn Fortran
"""
print(generation_model.predict(prompt=prompt, max_output_tokens=256).text)
Classification-based prompts guide the model’s decision-making and enhance control over the output.
Step 4: Deploying the Model for End-User Interaction
Once the prompts are designed and tested, you can integrate the model into an application to serve responses to end users. Below are the key steps:
4.1 Create an Endpoint
Deploy the model to an endpoint to make it accessible for real-time predictions.
from google.cloud import aiplatform
endpoint = aiplatform.Endpoint.create(
display_name="text-generation-endpoint",
model=generation_model.resource_name
)
print(f"Endpoint created: {endpoint.resource_name}")
4.2 Make Predictions via the Endpoint
Use the deployed endpoint to serve predictions to users.
response = endpoint.predict(instances=[{"content": "What is a good name for a flower shop?"}])
print(response.predictions[0])
4.3 Integrate into an Application
Embed the prediction logic into a web or mobile application. For example, use a REST API to send user queries to the endpoint and display the model’s responses.
Example using Flask:
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/generate', methods=['POST'])
def generate():
user_input = request.json.get('prompt')
response = endpoint.predict(instances=[{"content": user_input}])
return jsonify({"response": response.predictions[0]})
if __name__ == '__main__':
app.run(debug=True)
This setup enables users to interact with the model in real-time through a user-friendly interface.
Vertex AI simplifies the use of generative AI models but requires well-crafted prompts for optimal performance. By following best practices like being concise, specific, and including examples, you can effectively guide the model’s output. Experiment with different prompt designs and parameters to achieve the desired outcomes while minimizing errors.
Furthermore, integrating the model into a scalable application ensures the generative AI solution is accessible and practical for end users. Generative AI is a powerful tool—when used thoughtfully, it can unlock new opportunities and streamline workflows across various domains.
Thank you for reading! For more insights, follow and like.