# Build a QQ Official Bot AI Bot with Gemini

Source: https://langbot.app/docs/en/recipes/gemini/qq-official

Step-by-step guide to running a Gemini-powered AI bot on QQ Official Bot with LangBot: model setup, bot credentials, networking, testing and troubleshooting.

This recipe puts a Gemini model behind a QQ Official Bot bot. LangBot receives messages from QQ Official Bot, runs them through a pipeline, and sends the answer back, so you do not write any platform code.

Use Google's Gemini models with LangBot's built-in Agent, including image input when the model supports vision.

## What you need

- A running LangBot instance: [LangBot Cloud](https://space.langbot.app/cloud) (no server needed) or a [self-hosted deployment](https://langbot.app/docs/en/deploy/langbot/docker.md) with Docker or `uvx langbot`.
- A Gemini account or server you can call from LangBot.
- A bot registered on the QQ Open Platform: **AppID**, **Token** and **AppSecret**, with LangBot's server IP in the IP whitelist.

## Networking

The QQ Official Bot API (webhook) requires a public IP and working HTTPS. LangBot Cloud includes a public domain.

## 1. Add the Gemini model

1. Create an API key in the Google Gemini console.
2. In LangBot, open **Models**, add an LLM model with the provider set to Google Gemini, then paste the API key and the model ID.
3. Enable **Tool Use** if the model supports function calling; MCP tools, Skills and the sandbox need it.
4. Create the key in Google AI Studio. Enable **Vision** on the model if you want the bot to read images.

## 2. Create a pipeline

Open **Pipelines** in the LangBot WebUI, create a pipeline (or edit the default one) and set **AI** as follows.

| Field           | Value                                                                  |
| --------------- | ---------------------------------------------------------------------- |
| Runner          | **Local Agent** (built-in Agent)                                       |
| Model           | The model you just added. You can add fallback models.                 |
| Prompt          | Instructions: who the bot is, tone, what it must not do.               |
| Knowledge Bases | Optional. Attach a knowledge base so answers come from your documents. |

## 3. Create the QQ Official Bot bot

1. Create a bot with the **QQ Official** adapter and enter AppID, Token and AppSecret.
2. Copy the bot's webhook callback URL, replace the host with your HTTPS domain, and save it as the request address in the QQ management portal. Add test users in the sandbox settings.

## 4. Bind and test

Open the bot, select the pipeline you created, save and make sure the bot is enabled.

As a sandbox member, message the bot in a private chat or @mention it in a sandbox group.

## Troubleshooting

- Images are ignored: enable **Vision** on the model and check that the platform adapter forwards images.
- Saving the request address fails: the domain is not reachable over HTTPS or the path does not end with `/bots/<bot id>`.
- Check **Monitoring** in the WebUI: every message, pipeline run and error is recorded there.

## FAQ

### Do I need a server with a public IP for QQ Official Bot?

Yes, or use LangBot Cloud. The QQ Official Bot API (webhook) requires a public IP and working HTTPS. LangBot Cloud includes a public domain.

### Does the QQ Official Bot bot support streaming replies?

Check the [platform feature matrix](https://langbot.app/docs/en/insight/platform-features.md) for what this platform supports. Replies are delivered once the AI back end has finished.

### Can the same Gemini setup serve other platforms too?

Yes. A pipeline can be bound to many bots, so one configuration can answer on several platforms at once.

## Related guides

- [Full QQ Official Bot setup guide](https://langbot.app/docs/en/usage/platforms/qq/official_webhook.md)
- [Model configuration](https://langbot.app/docs/en/usage/models/readme.md)
- Other AI back ends on QQ Official Bot: [Dify](https://langbot.app/docs/en/recipes/dify/qq-official.md) · [n8n](https://langbot.app/docs/en/recipes/n8n/qq-official.md) · [Coze](https://langbot.app/docs/en/recipes/coze/qq-official.md) · [Langflow](https://langbot.app/docs/en/recipes/langflow/qq-official.md) · [DeepSeek](https://langbot.app/docs/en/recipes/deepseek/qq-official.md)
- Gemini on other platforms: [Telegram](https://langbot.app/docs/en/recipes/gemini/telegram.md) · [Discord](https://langbot.app/docs/en/recipes/gemini/discord.md) · [Slack](https://langbot.app/docs/en/recipes/gemini/slack.md) · [Lark (Feishu)](https://langbot.app/docs/en/recipes/gemini/lark.md) · [DingTalk](https://langbot.app/docs/en/recipes/gemini/dingtalk.md) · [WeCom (internal app)](https://langbot.app/docs/en/recipes/gemini/wecom.md)
