Disclaimer: The views expressed herein are for reference only and don't necessarily represent the official views of Alibaba Cloud.
Chatbots promised personalised customer engagement, but most delivered scripted replies with no real understanding of context.
Traditional bots rely on keyword matching, while LLM-based agents understand natural language, maintain conversation context, and retrieve accurate information from connected knowledge bases.
With tools like Alibaba Cloud Model Studio, businesses can build AI agents that know their products, speak in their brand voice, and guide visitors without writing code.
Model Studio offers two distinct approaches depending on who is building the chatbot and where it needs to run.
Agent applications require no code: define prompts, attach a knowledge base, enable plug-ins, and the model handles the rest.
The simple setup and conversational interface make them ideal for beginners building single-function apps.
The no-code Agent Application path is the right starting point for most marketing teams. You configure everything in the Model Studio console: choose a model, write a system prompt, upload your product documents to a knowledge base, and your chatbot is live in minutes. This is the path covered in Steps 1 through 5 below.
The API integration path is for developers who need to embed the chatbot into an existing website, landing page, or CRM system. Once your agent is configured in the console, you call it programmatically through the DashScope SDK. Steps 6 and 7 cover this.
Both paths use the same underlying Qwen models and the same Model Studio infrastructure.
The no-code path gives you a hosted agent you can share via link or embed as a widget. The API path gives you programmatic access to the same agent from any application.
Before starting, have the following ready:
Model Studio provides a limited-time free token quota for new users on most models.
Check the Models page and click View Details on the model you plan to use to see current free quota availability before you start.
Log on to the Alibaba Cloud Model Studio console. In the left-side navigation pane, select My Applications. Click Create Application. On the dialogue box that appears, click Create Directly on the Agent Application tab.
Give the application a name that reflects its purpose, for example "Marketing Assistant" or "Product Guide Bot." This name appears in the console but not necessarily in the chat widget itself, where you will set a display name through the system prompt.
Once the application is created, the configuration page opens. You will see three main sections: model selection, system prompt, and capabilities (knowledge base and plug-ins). Work through each of these in the steps below.
From the model selection drop-down menu, select a model, such as Qwen-Plus. Click More Models to select other models.
For a marketing chatbot, the model you choose affects both response quality and cost. Here is how the main options compare:
| Model | Best For | Notes |
|---|---|---|
Qwen-Plus |
Most marketing chatbot use cases | Balanced capabilities: inference quality, cost, and speed are between Qwen-Max and Qwen-Flash, making it ideal for medium-complexity tasks |
Qwen-Max |
Complex multi-step sales conversations, technical buyers | Top quality, higher cost per token |
Qwen3.5-Flash |
High-volume simple FAQ bots | Fastest and cheapest, less nuanced on ambiguous questions |
Start with Qwen-Plus. It handles the conversational complexity of a marketing scenario well without the cost overhead of Qwen-Max.
After selecting the model, click the settings icon next to the model drop-down to configure the following parameters:
Maximum Response Length: The length limit for the model's generation, excluding the prompt. The maximum allowed length varies by model. Context Turns: Sets the maximum number of historical conversation turns to input to the model. The more turns you include, the stronger the conversational relevance. Temperature: Controls the randomness and diversity of the generation.
For a marketing chatbot, set temperature to 0.5 or 0.6 for consistent, predictable responses. Set Context Turns to 10, which gives the model enough conversational history to follow a product discussion without inflating token costs unnecessarily.
The system prompt is the most important configuration you will make. It tells the agent who it is, what it knows, how it should behave, and what it should never do.
A vague system prompt produces a generic-sounding bot. A specific one produces a focused agent that feels like it belongs to your brand.
Here is a strong system prompt template for a marketing chatbot. Replace the product-specific details with your own:
You are Alex, a marketing assistant for BrightDesk — a project management
platform for remote teams.
YOUR ROLE:
Help visitors understand BrightDesk, find the right plan for their team,
and take the next step toward a free trial or speaking with our sales team.
HOW TO BEHAVE:
- Keep answers concise. Two to three sentences is usually enough unless
the visitor asks for detail.
- When a visitor mentions their team size or describes their workflow,
recommend the most suitable plan by name.
- If a question is not covered by the knowledge base, say so honestly
and offer to connect the visitor with a team member.
- Never invent product features, pricing, or integrations.
- Do not pressure visitors. Let them set the pace.
LEAD CAPTURE:
When a visitor says they want to try the product, asks how to sign up,
or says they are ready to get started, respond warmly and ask:
"I can help you get set up. Could I get your name and email address?"
Do not ask for contact details until the visitor expresses interest.
HANDOFF:
If a visitor asks about billing disputes, enterprise contracts, security
audits, or anything outside your knowledge base, respond with:
"That is something our team handles directly.
Would you like me to have someone reach out to you today?"
Three things make this prompt effective. It names the bot and gives it a defined role, which anchors consistent tone.
It includes explicit rules for lead capture and human handoff, which are the two moments that determine marketing value. And it tells the bot what it should never do, which reduces hallucination.
Enter this prompt in the Instructions field of the agent configuration page. Model Studio uses this as the system message on every conversation turn.
Without a knowledge base, the chatbot can only answer using what the model learned during training, which does not include your product specifics. The knowledge base is where you upload your product content so the agent can retrieve and use it accurately.
Large language models lack private knowledge, and their general knowledge can be outdated. The industry commonly uses retrieval-augmented generation (RAG) technology to retrieve relevant information from external sources based on user input.
This retrieved content is then combined with the user's query and provided to the LLM to generate more accurate answers. The knowledge base feature, which is the RAG capability of Model Studio, effectively supplements private knowledge and provides the latest information.
Create the knowledge base:
In the left-side navigation pane, choose Data Management. Click Import Data on the Unstructured Data tab. Model Studio provides the Category Management feature for organizing documents. After uploading knowledge documents, they are automatically saved under the Default Category.
Upload the following document types for a marketing chatbot:
After the document is uploaded, click Confirm. The Import Data page provides default configurations. No change is necessary for this tutorial.
Wait until the import is completed. The import time depends on the document size, typically ranging from 1 to 6 minutes.
Create and index the knowledge base:
In the left-side navigation pane, choose Data Application, then Knowledge Index. Click Create Knowledge Base. Enter a Name for the knowledge base, and click Next Step.
Choose Select Category and select the category containing your uploaded documents. Select Intelligent Splitting in the Data Processing section. Then, click Import.
Intelligent Splitting is the recommended parsing strategy for most marketing documents. It optimises how the document is divided into retrievable chunks for more accurate answers.
Wait until the knowledge base is parsed. The parsing time depends on the document size, typically 1 to 2 minutes.
Connect the knowledge base to your agent:
In the left-side navigation pane, click My Applications. Then, click Manage of the application you just created. Enable the Knowledge Base Retrieval Augmentation feature. Then, select the knowledge base you just created. The application automatically generates a corresponding prompt.
Once the knowledge base is connected, the agent will search it whenever a visitor asks a question. If the knowledge base contains a relevant answer, the agent will use it. If not, it will fall back to its trained knowledge and the instructions in your system prompt.
Model Studio includes a built-in test panel on the agent configuration page. Use it to walk through the key conversation scenarios before embedding the chatbot anywhere.
After the application is created, enter Hello in the dialog box on the left to test it.
Test the following scenarios at a minimum:
Scenario 1: Product question answered from the knowledge base. Ask about a specific feature or integration that is documented in your uploaded files. The response should be accurate and cite the relevant detail. If the answer is wrong or missing, the problem is usually with how the document was chunked. Try splitting long documents into shorter, topic-focused files rather than uploading one large document.
Scenario 2: A question outside the knowledge base. Ask something not covered in any of your uploaded files. The agent should acknowledge honestly that it does not have that information and offer to connect the visitor with a team member, as instructed in the system prompt.
Scenario 3: Lead capture trigger. Say "I think I want to start a trial." The agent should ask for a name and email address in response to the buying signal, not before it.
Scenario 4: Human handoff trigger. Ask about a complex enterprise topic like SSO configuration or a security audit. The agent should offer to connect the visitor with someone from the team.
If any scenario produces unexpected output, refine the system prompt. Add a more explicit instruction for the specific edge case rather than trying to solve it with model parameter changes.
Knowledge base hit testing:
If the knowledge base is connected but the agent gives generic answers instead of specific product answers, use the built-in hit test feature.
Perform a knowledge base hit test to check the similarity score between the question and the knowledge base content. If the score is low, try optimising the retrieval configuration to ensure that the model prioritises retrieving answers from the knowledge base.
Low similarity scores usually mean the question phrasing does not closely match the language in the document. Add common question phrasings directly into your FAQ document to improve match rates.
Once your agent is configured and tested in the console, you can call it programmatically from your website, campaign landing page, or marketing platform using the DashScope SDK.
You can integrate agent, workflow, or agent orchestration applications from Model Studio into your business systems through DashScope SDK or HTTP. You have obtained an API key. You have created a Model Studio application, and obtained the application ID on the My Applications page.
Get your application ID from the My Applications page. It appears on the application card.
Install the DashScope SDK:
pip install dashscope
Here is a minimal Python client that calls your agent and maintains conversation history across multiple turns:
import os
import dashscope
from http import HTTPStatus
dashscope.base_http_api_url = "https://dashscope-intl.aliyuncs.com/api/v1"
APP_ID = "your-app-id-here" # From the My Applications page in Model Studio
def chat_with_agent(user_message: str, session_id: str) -> str:
"""
Send a message to the Model Studio agent and return the reply.
Pass the same session_id for each turn of a single visitor's conversation
so the agent maintains context across the session.
"""
response = dashscope.Application.call(
api_key=os.getenv("DASHSCOPE_API_KEY"),
app_id=APP_ID,
prompt=user_message,
session_id=session_id # Keeps conversation memory across turns
)
if response.status_code == HTTPStatus.OK:
return response.output.text
else:
print(f"Error {response.status_code}: {response.message}")
return "I am having trouble connecting right now. Please try again in a moment."
# Test the agent from the command line
if __name__ == "__main__":
import uuid
session = str(uuid.uuid4()) # One unique session ID per visitor
print("Marketing chatbot ready. Type 'quit' to exit.\n")
while True:
user_input = input("Visitor: ").strip()
if not user_input or user_input.lower() == "quit":
break
reply = chat_with_agent(user_input, session)
print(f"\nAlex: {reply}\n")
The session_id parameter is critical. It tells Model Studio to maintain the conversation history for this specific session, so when a visitor says "tell me more about that" the agent knows what "that" refers to from earlier in the conversation.
Use a new UUID for each visitor session and the same UUID for all turns within that session.
Your website's chat widget cannot call the DashScope SDK directly. It needs a thin web API between the browser and the SDK. Here is a minimal Flask endpoint that handles this:
import os
import uuid
from flask import Flask, request, jsonify
import dashscope
from http import HTTPStatus
app = Flask(__name__)
dashscope.base_http_api_url = "https://dashscope-intl.aliyuncs.com/api/v1"
APP_ID = os.getenv("MODEL_STUDIO_APP_ID")
@app.route("/chat", methods=["POST"])
def chat():
data = request.json or {}
user_message = data.get("message", "").strip()
session_id = data.get("session_id") or str(uuid.uuid4())
if not user_message:
return jsonify({"error": "message is required"}), 400
response = dashscope.Application.call(
api_key=os.getenv("DASHSCOPE_API_KEY"),
app_id=APP_ID,
prompt=user_message,
session_id=session_id
)
if response.status_code == HTTPStatus.OK:
return jsonify({
"reply": response.output.text,
"session_id": session_id
})
else:
return jsonify({"error": "Service temporarily unavailable"}), 503
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=False)
Deploy this on an Alibaba Cloud ECS instance for a persistent server, or on Function Compute for a serverless setup that costs nothing when no conversations are active.
Your frontend chat widget makes a POST request to /chat with the visitor's message and the current session_id. The response includes the agent's reply and the session ID to use for the next turn. On the first message, omit session_id and the API will generate a new one to return to the frontend.
A knowledge base that reflects your current product is one of the most important maintenance tasks for a marketing chatbot.
When pricing changes, new integrations ship, or a new product plan launches, the knowledge base needs to reflect that before your chatbot starts giving visitors outdated information.
Click Test in the upper-right corner of the page. Then, ask a question in the input box on the right. The LLM will use the knowledge base that you created to generate an answer.
After updating your documents, re-import them into the knowledge base using the same steps from Step 4. Delete the old versions of the files to avoid the agent retrieving both old and new information and producing conflicting answers.
A practical update workflow:
This process takes about ten minutes once you have done it once. Build it into your product launch checklist so the chatbot is always current.
The chatbot as configured above can hold a conversation and direct visitors toward your sales funnel. But to make lead capture concrete, you need to detect when the agent has captured a visitor's contact details and route that information to your marketing team.
The cleanest approach is to monitor the agent's responses on the API side for the presence of email addresses and capture them automatically:
import re
def extract_and_save_lead(session_id: str, agent_reply: str, user_message: str):
"""
Check if the visitor just provided their email in the last user message.
If yes, save it as a lead and notify the marketing team.
"""
email_pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b'
emails = re.findall(email_pattern, user_message)
if emails:
lead = {
"email": emails[0],
"session_id": session_id,
"timestamp": datetime.now().isoformat()
}
# Write to your database or CRM here
# Example: save to ApsaraDB RDS or trigger an email notification
print(f"[LEAD CAPTURED] {lead}")
return lead
return None
Add a call to this function inside your Flask /chat endpoint, checking the user's most recent message after the agent responds. When the visitor replies to the chatbot's request for contact details, their email will be in that message.
Store captured leads in Alibaba Cloud ApsaraDB for RDS and monitor chatbot lead volume alongside your campaign metrics in Quick BI for a complete picture of how the chatbot is contributing to pipeline.
Chatbot performance is easy to see in conversation logs but easy to miss if you are not tracking the right metrics from the start. Define these before launch:
Widget engagement rate. What percentage of visitors who see the chat widget send at least one message? Below 5 percent suggests the widget placement, trigger timing, or opening message needs work. Above 15 percent is strong for a marketing page.
Knowledge base hit rate. How often does the agent pull an answer from your knowledge base versus falling back to general knowledge or the handoff message? A low hit rate means your documents need more content or better keyword coverage.
Lead capture rate. Of all visitors who engage with the chatbot, what percentage provide their email address? This is the primary marketing metric. A rate below 8 percent suggests the lead capture prompt is firing too early, too late, or the offer is not compelling enough.
Session depth. Average number of conversation turns per session. Three to six turns is typical for a marketing chatbot. Fewer turns suggest visitors are not getting their questions answered. Many more turns might mean the bot is struggling to resolve queries efficiently.
Handoff rate. What percentage of conversations end with a request for a human follow-up? A rate consistently above 25 percent suggests the knowledge base needs expanding. A rate below 2 percent might mean the handoff signals in the system prompt are too restrictive.
Log all of these metrics from your API layer and review them weekly for the first month. Most chatbots need two or three iterations on the system prompt and knowledge base before performance stabilises.
Visitors to your site deserve to know they are talking to an AI assistant, not a human. The system prompt in this guide names the chatbot and describes it as a "marketing assistant," which is honest framing that most visitors accept easily.
What erodes trust is a chatbot that claims to be human when asked directly, or that collects personal information without being transparent about why. Keep the instruction in your system prompt that tells the agent to respond honestly if someone asks whether it is a real person.
Transparency at the moment of lead capture is also good practice. A response like "I can set that up for you right now. Could I get your name and email address?" is clear about why the bot is asking. Visitors who consent in that context are warmer leads than visitors whose contact details were captured through a form they did not notice.
In this guide you built a complete AI marketing chatbot on Alibaba Cloud Model Studio, covering:
The no-code agent path makes this accessible to marketing teams without engineering support. The API path gives developers the control to embed the same agent anywhere. Both use the same underlying Qwen models and the same knowledge base you built in one place.
Console navigation and feature availability in this article reflect Alibaba Cloud Model Studio as of early 2026. Some Application Development features are available only to International Edition users who created applications before April 21, 2025. Refer to the official documentation for current feature access and regional availability before starting.
Building an AI-Powered Product Recommendation Engine for E-Commerce Using Alibaba Cloud PAI
15 posts | 3 followers
FollowJustin See - March 19, 2026
Farruh - June 30, 2025
Kalpesh Parmar - May 5, 2026
plavookac - June 2, 2025
Alibaba Cloud Indonesia - March 26, 2025
Kalpesh Parmar - November 12, 2025
15 posts | 3 followers
Follow
Intelligent Robot
A dialogue platform that enables smart dialog (based on natural language processing) through a range of dialogue-enabling clients
Learn More
Quick BI
A new generation of business Intelligence services on the cloud
Learn More
Data Lake Storage Solution
Build a Data Lake with Alibaba Cloud Object Storage Service (OSS) with 99.9999999999% (12 9s) availability, 99.995% SLA, and high scalability
Learn More
Storage Capacity Unit
Plan and optimize your storage budget with flexible storage services
Learn MoreMore Posts by Kalpesh Parmar