# 大语言模型平台接入

为实现更多神秘小功能，此方 Bot 需要接入 AI。如果你需要参与开发或测试涉及 AI 的相关功能，麻烦请根据下面的文档继续操作。

## 配置项目接入 AI

AI 相关的配置文件在 `data/config/llm.json` 文件中。示例格式如下，这也将是到时候在云端的配置文件格式（给出的模型都会有）：

```json
{
  "llms": {
    "Qwen2.5-7B-Instruct": {
      "base_url": "https://api.siliconflow.cn/v1",
      "api_key": "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "model_name": "Qwen/Qwen2.5-7B-Instruct"
    },
    "qwen3-max": {
      "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
      "api_key": "sk-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "model_name": "qwen3-max"
    }
  },
  "default_llm": "Qwen2.5-7B-Instruct"
}
```

其中，形如 `qwen3-max` 的名称，是你在程序中调用 LLM 使用的键名。若不给出，则会默认使用配置文件中指定的默认模型。

```python
from konabot.common.llm import get_llm

llm = get_llm()               # 获得的是 Qwen2.5-7B-Instruct 模型
llm = get_llm("qwen3-max")    # 获得的是 qwen3-max 模型

message = await llm.chat([
  { "role": "system", "content": "你是一只猫娘" },
  { "role": "user", "content": "晚上好呀！" },
], timeout=None, max_tokens=16384)
# 获得了的是 openai.types.chat.ChatCompletionMessage 对象

print(f"AI 返回值：{message.content}")    # 注意 content 可能为 None，需要做空值检测

client = llm.get_openai_client()    # 获得的是一个 OpenAI Client 对象，可以做更多操作
                                    # 例如，调用 Embedding 模型来做知识库向量化等工作
```

## 本项目使用的模型清单

为了便利大家使用，我在这里给出该项目将会使用的模型清单，请根据你的开发需求注册并选择你最喜欢的模型。如果需要接入新的模型，或者使用到文档之外的模型，欢迎在这里给出！

### 硅基流动 Qwen/Qwen2.5-7B-Instruct

一个 7B 大小的 AI 模型。其性能不太能指望，但是它小，而且比较快，可以做一些轻量的操作。

该模型是免费的，但是也需要你注册[硅基流动](https://cloud.siliconflow.cn/me/models)账号，并生成 `api_key` 添加到配置文件中。

### 通义千问 qwen3-max

贵但是很先进的最新模型，其能力可以信赖。但是不要拿它做大量工作哦！

在[百炼大模型平台](https://bailian.console.aliyun.com/)注册账号并申请 `api_key`，新用户会赠送 1M tokens，足够做测试了。

## 安全须知

请注意提防 AI 越狱等情况。
