# Qwen Chat Prompt and Response

The **Qwen Chat Prompt Example Flow** demonstrates how to interact with the Qwen Chat API to send prompts and retrieve AI-generated responses. This flow covers the entire process from sending user-defined prompts to receiving, formatting, and storing the responses as structured records. It includes robust error handling and testing capabilities, making it an ideal starting point for integrating AI-driven chat functionality into your applications.

You can find this template in the Services Catalog under these categories:

* AI, Contextual Basics

***

#### What's Included:

1. **1 Flow**: Pre-configured for prompt-response interactions with Qwen Chat.
2. **1 Object Type**: To store structured prompt-response records.
3. **1 Connection Template**: For integrating with the Qwen Chat API.

***

#### What You'll Need:

* Access to the Qwen Chat API.
* API Key or credentials for authentication.
* Sample prompts or use cases for testing.

***

#### Ideas for Using the Qwen Chat Prompt Flow:

1. **Conversational AI**: Automate chat-based interactions for virtual assistants or customer support bots.
2. **Content Creation**: Generate creative content or responses based on tailored prompts.
3. **Decision Support**: Process complex queries to retrieve insights for decision-making.
4. **Education**: Leverage AI-generated explanations for teaching or self-learning purposes.

***

#### Flow Overview

**Flow Start**

* **Node**: `contextual-start`
* **Purpose**: Triggers the flow, initiated by an external event, agent, or the Inject node for testing.

***

**In-Editor Testing**

* **Nodes**: `Test Prompt`, `Prepare Prompt`
* **Purpose**: Enables in-editor testing with a sample prompt. Modify the provided sample prompt, such as "How many 'r's are in Strawberry?" to explore different interactions with the Qwen Chat API.

**Code Example: Prepare Prompt Function**

```javascript
msg.payload = {
    model: "qwen-max-2025-01-25", // Specify model here
    messages: [
        { role: "system", content: "You are a helpful assistant." },
        { role: "user", content: msg.payload.prompt }
    ]
};
return msg;
```

***

**Send Prompt and Receive Response**

* **Nodes**: `Prompt Qwen Chat`, `Qwen Chat Response`
* **Purpose**: Sends the prepared payload to the Qwen Chat API. Logs the response for review and passes it for further processing.

**Code Example: Response Logging**

```javascript
msg.payload.response = {
    aiResponse: msg.payload.response.choices[0].message.content
};
return msg;
```

***

**Format Response & Create Record**

* **Nodes**: `Prepare Record Data`, `Create AI Response Record`
* **Purpose**: Formats the API response and creates a structured record containing the original prompt and the AI-generated response.

**Code Example: Prepare Record Data**

```javascript
let body = {
    prompt: msg.payload.messages[1].content,
    aiResponse: msg.payload.response.choices[0].message.content
};
msg.payload = body;
return msg;
```

***

**Error Handling**

* **Nodes**: `catch`, `Error Catch Log`, `contextual-error`
* **Purpose**: Captures and logs any errors during the flow execution, ensuring efficient debugging and troubleshooting.

***

**Flow End**

* **Node**: `contextual-end`
* **Purpose**: Concludes the flow after records are successfully created or errors are logged.

***

#### Summary of Flow Steps:

1. **Start**: Trigger the flow manually or externally.
2. **Data Preparation**: Format the prompt for API interaction.
3. **API Interaction**: Submit the prompt and process the AI response.
4. **Record Creation**: Structure and store the prompt-response data.
5. **Error Handling**: Log and manage any issues that arise.
6. **Completion**: Conclude the flow.

***

#### Key Features:

* **Flexibility**: Easily adaptable to various use cases.
* **Scalability**: Integrates seamlessly into broader workflows.
* **Customization**: Modify prompts, response handling, and storage as needed.

This flow serves as a robust template for leveraging AI-powered chat functionality, providing clear examples and extensibility for diverse applications.
