mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-11-01 05:15:22 +08:00
234 lines
9.7 KiB
Markdown
234 lines
9.7 KiB
Markdown
# provider.json Configuration
|
|
|
|
:::info Table of Contents
|
|
[[toc]]
|
|
:::
|
|
|
|
The `data/config/provider.json` file contains configuration items related to AI interface providers.
|
|
|
|
## Enable Chat Function (enable-chat)
|
|
|
|
```json
|
|
"enable-chat": true,
|
|
```
|
|
|
|
`enable-chat`: Whether to enable the AI chat function.
|
|
|
|
## Enable AI Vision Function (enable-vision)
|
|
|
|
```json
|
|
"enable-vision": true,
|
|
```
|
|
|
|
`enable-vision`: Whether to enable the AI vision function. The model used must also support the vision function. For details, refer to the metadata section.
|
|
|
|
## Model API Keys (keys)
|
|
|
|
::: info
|
|
Different model providers may use different API formats. LangBot determines the usage of each model through a triplet (requester, key group, model name). To view supported models or add custom models, refer to the metadata configuration section in the `llm-models.json` file.
|
|
:::
|
|
|
|
```json
|
|
"keys": {
|
|
"openai": [
|
|
"sk-1234567890"
|
|
],
|
|
"anthropic": [
|
|
"sk-1234567890"
|
|
],
|
|
"moonshot": [
|
|
"sk-1234567890"
|
|
],
|
|
"deepseek": [
|
|
"sk-1234567890"
|
|
],
|
|
"gitee-ai": [
|
|
"XXXXX"
|
|
]
|
|
},
|
|
```
|
|
|
|
`keys`: Configure key groups in dictionary format, where each key group's name is the key and the value is a list of keys. For the correspondence between models and key groups, refer to the metadata section in the `llm-models.json` file.
|
|
|
|
Currently supported key groups:
|
|
|
|
- `openai`: Key group for [OpenAI](https://openai.com/). If you don't have an OpenAI API Key, you can [get one here](https://api.qhaigc.net/).
|
|
- `anthropic`: Key group for [Anthropic](https://anthropic.com/).
|
|
- `moonshot`: Key group for [Moonshot](https://moonshot.cn/) (Moonshot AI).
|
|
- `deepseek`: Key group for [Deepseek](https://deepseek.com/) (Deepseek AI).
|
|
- `gitee-ai`: Key group for [Gitee AI](https://ai.gitee.com/) Serverless API.
|
|
|
|
## Large Model Requester (requester)
|
|
|
|
```json
|
|
"requester": {
|
|
"openai-chat-completions": {
|
|
"base-url": "https://api.openai.com/v1",
|
|
"args": {},
|
|
"timeout": 120
|
|
},
|
|
"anthropic-messages": {
|
|
"base-url": "https://api.anthropic.com",
|
|
"args": {
|
|
"max_tokens": 1024
|
|
},
|
|
"timeout": 120
|
|
},
|
|
"moonshot-chat-completions": {
|
|
"base-url": "https://api.moonshot.cn/v1",
|
|
"args": {},
|
|
"timeout": 120
|
|
},
|
|
"deepseek-chat-completions": {
|
|
"base-url": "https://api.deepseek.com",
|
|
"args": {},
|
|
"timeout": 120
|
|
},
|
|
"ollama-chat": {
|
|
"base-url": "http://127.0.0.1:11434",
|
|
"args": {},
|
|
"timeout": 600
|
|
},
|
|
"gitee-ai-chat-completions": {
|
|
"base-url": "https://ai.gitee.com/v1",
|
|
"args": {},
|
|
"timeout": 120
|
|
}
|
|
},
|
|
```
|
|
|
|
`requester`: Configure requesters, where each requester's name is the key and the value is the requester configuration. For the correspondence between models and requesters, refer to the metadata section in the `llm-models.json` file. For implementing requesters, refer to the plugin development tutorial.
|
|
|
|
Currently supported requesters (unless a new requester is implemented via a plugin, new requester configurations cannot be added to `requester`):
|
|
|
|
- `openai-chat-completions`: ChatCompletion requester for [OpenAI](https://openai.com/).
|
|
- `anthropic-messages`: Requester for [Anthropic](https://anthropic.com/) (Claude).
|
|
- `moonshot-chat-completions`: Requester for [Moonshot](https://moonshot.cn/) (Moonshot AI).
|
|
- `deepseek-chat-completions`: Requester for [Deepseek](https://deepseek.com/) (Deepseek AI).
|
|
- `ollama-chat`: Requester for [Ollama](https://ollama.com/), which does not require a key and directly requests the Ollama service at the target address.
|
|
- `gitee-ai-chat-completions`: Requester for [Gitee AI](https://ai.gitee.com/) Serverless API (OpenAI-compatible interface).
|
|
|
|
`base-url`: Set the API endpoint.
|
|
|
|
`args`: Additional parameters for the request, excluding the model, set in dictionary format. Refer to the documentation of each provider for details.
|
|
|
|
`timeout`: Set the request timeout in seconds. For models that take longer, it is recommended to set a larger value.
|
|
|
|
## Model to Use (model)
|
|
|
|
```json
|
|
"model": "gpt-3.5-turbo",
|
|
```
|
|
|
|
`model`: Set the name of the model to use. This model must exist in the `llm-models.json` metadata.
|
|
|
|
For the list of supported models and the corresponding requesters and key groups for each model, refer to the metadata section in the `llm-models.json` file.
|
|
|
|
## Scenario Preset (Personality) (prompt)
|
|
|
|
```json
|
|
"prompt-mode": "normal",
|
|
"prompt": {
|
|
"default": "If the user wants help later, please say 'Input !help to get help.'."
|
|
}
|
|
```
|
|
|
|
`prompt-mode`: Set the scenario preset mode, with values `normal` (single preset mode) and `full-scenario` (full historical conversation mode).
|
|
|
|
In `normal` mode, use the `prompt` below, which can have multiple entries.
|
|
|
|
```json
|
|
"prompt": {
|
|
"default": "If the user wants help later, please say 'Input !help to get help.'.",
|
|
"help": "If the user wants help later, please say 'Input !help to get help.'."
|
|
}
|
|
```
|
|
|
|
The `normal` mode also supports reading the contents of files in the `data/prompts` directory as individual System Prompts, where the file name is the `prompt` name.
|
|
|
|
In use, set it as the default via the `!default set <preset name>` command (replace `<preset name>` entirely).
|
|
|
|
### Full-Scenario Mode Configuration
|
|
|
|
Add complete historical conversations as files to the `data/scenario/` directory, referencing `data/scenario/default.json`.
|
|
|
|
```json
|
|
{
|
|
"prompt": [
|
|
{
|
|
"role": "system",
|
|
"content": "You are a helpful assistant. If I need help, you should say 'Input !help to get help.'"
|
|
},
|
|
{
|
|
"role": "assistant",
|
|
"content": "Okay, I am a capable AI assistant. If you need help, I will say 'Input !help to get help.'"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
`role` is the role of the message, which can be `user` (user), `assistant` (AI), or `system` (system).
|
|
`content` is a string representing the message content.
|
|
In use, set it as the default via the `!default set <file name>` command (replace `<preset name>` entirely).
|
|
|
|
## Request Runner (runner)
|
|
|
|
```json
|
|
"runner": "local-agent",
|
|
```
|
|
|
|
Set which runner will handle the chat messages. The default is `local-agent`.
|
|
Currently supported:
|
|
|
|
- `local-agent`: A local Agent mechanism implemented by LangBot, managing conversations and invoking plugins. Must be set to `local-agent` to use `content functions`.
|
|
- `dify-service-api`: Use the Service API mechanism of [Dify](https://dify.ai/), supporting chat assistants, Agents, and workflow applications.
|
|
|
|
## Dify Service API Configuration (dify-service-api)
|
|
|
|
```json
|
|
"dify-service-api": {
|
|
"base-url": "https://api.dify.ai/v1",
|
|
"app-type": "chat",
|
|
"chat": {
|
|
"api-key": "app-1234567890",
|
|
"timeout": 120
|
|
},
|
|
"agent": {
|
|
"api-key": "app-1234567890",
|
|
"timeout": 120
|
|
},
|
|
"workflow": {
|
|
"api-key": "app-1234567890",
|
|
"output-key": "summary",
|
|
"timeout": 120
|
|
}
|
|
}
|
|
```
|
|
|
|
Only when `runner` is set to `dify-service-api`, configure the following:
|
|
|
|
- `base-url`: The address of the Dify Service API, default is `https://api.dify.ai/v1`, which is the address of the official Dify cloud service. If you are using a self-deployed community edition, set it to your self-deployed address.
|
|
- `app-type`: The type of Dify application to use. Supports `chat` - chat assistant (including advanced orchestration), `agent` - Agent, `workflow` - workflow; fill in the corresponding API parameters for the application type below.
|
|
- `chat`: Configuration for Dify chat assistant applications.
|
|
- `api-key`: API key for the Dify chat assistant application.
|
|
- `timeout`: Request timeout for the Dify chat assistant application, in seconds, default is 120 seconds.
|
|
- `agent`: Configuration for Dify Agent applications.
|
|
- `api-key`: API key for the Dify Agent application.
|
|
- `timeout`: Request timeout for the Dify Agent application, in seconds, default is 120 seconds.
|
|
- `workflow`: Configuration for Dify workflow applications.
|
|
- `api-key`: API key for the Dify workflow application.
|
|
- `output-key`: Output key for the Dify workflow application, used to retrieve the output results of the workflow application. Default is `summary`, corresponding to the output variable of the end node in the workflow orchestration.
|
|
- `timeout`: Request timeout for the Dify workflow application, in seconds, default is 120 seconds.
|
|
|
|

|
|
|
|
When using workflows, LangBot will explicitly pass the following parameters, which you can add to the start node of the Dify workflow:
|
|
|
|
- `langbot_user_message_text`: Plain text of the user's message.
|
|
- `langbot_session_id`: User session ID, `person_<id>` for private chats, `group_<id>` for group chats.
|
|
- `langbot_conversation_id`: User conversation ID, generated by LangBot. It will be regenerated after the user resets the conversation.
|
|
|
|

|
|
|
|
When using workflow applications or Agent applications, if `track-function-calls` in `platform.json` is enabled, a message `Calling function xxx` will be output to the user when Dify executes each tool call.
|
|
However, if using `ChatFlow` under the `chat` application (chat assistant -> workflow orchestration), only the text returned by the Answer (direct reply) node will be output. |