summaryrefslogtreecommitdiffstats
path: root/config.example.yaml
blob: d3e1ea1547091d5ef1fbcbad974ac7968227ab79 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
model: openai:gpt-3.5-turbo      # Specify the language model to use
temperature: null                # Set default temperature parameter
top_p: null                      # Set default top-p parameter
save: true                       # Indicates whether to persist the message
save_session: null               # Controls the persistence of the session, if null, asking the user
highlight: true                  # Controls syntax highlighting
light_theme: false               # Activates a light color theme when true. ENV: AICHAT_LIGHT_THEME
wrap: no                         # Controls text wrapping (no, auto, <max-width>)
wrap_code: false                 # Enables or disables wrapping of code blocks
auto_copy: false                 # Enables or disables automatic copying the last LLM response to the clipboard 
keybindings: emacs               # Choose keybinding style (emacs, vi)

prelude: null                    # Set a default role or session to start with (e.g. role:<name>, session:<name>)
repl_prelude: null               # This overrides 'prelude' when using REPL

# Command that will be used to edit the current line buffer with ctrl+o
# if unset fallback to $EDITOR and $VISUAL
buffer_editor: null

# Controls the function calling feature. For setup instructions, visit https://github.com/sigoden/llm-functions
function_calling: false

# Regex for seletecting dangerous functions.
# User confirmation is required when executing these functions. 
# e.g. 'execute_command|execute_js_code' 'execute_.*'
dangerously_functions_filter: null

bot_prelude: null               # Set a session to use when starting a bot.  (e.g. temp, default)

bots:
  - name: todo-sh
    model: null
    temperature: null
    top_p: null
    dangerously_functions_filter: null

# Specifies the embedding model to use
rag_embedding_model: null
# Specifies the chunk size
rag_chunk_size: null
# Specifies the chunk overlap
rag_chunk_overlap: null
# Determines how many relevant documents are retrieved
rag_top_k: 4

# Defines the query structure using variables like __CONTEXT__ and __INPUT__ to tailor searches to specific needs
rag_template: |
  Use the following context as your learned knowledge, inside <context></context> XML tags.
  <context>
      __CONTEXT__
  </context>

  When answer to user:
  - If you don't know, just say that you don't know.
  - If you don't know when you are not sure, ask for clarification.
  Avoid mentioning that you obtained the information from the context.
  And answer according to the language of the user's question.

  Given the context information, answer the query.
  Query: __INPUT__

# Compress session when token count reaches or exceeds this threshold (must be at least 1000)
compress_threshold: 4000
# Text prompt used for creating a concise summary of session message
summarize_prompt: 'Summarize the discussion briefly in 200 words or less to use as a prompt for future context.'
# Text prompt used for including the summary of the entire session
summary_prompt: 'This is a summary of the chat history as a recap: '

# Custom REPL prompt, see https://github.com/sigoden/aichat/wiki/Custom-REPL-Prompt
left_prompt: '{color.green}{?session {?bot {bot}#}{session}{?role /}}{!session {?bot {bot}}}{role}{?rag @{rag}}{color.cyan}{?session )}{!session >}{color.reset} '
right_prompt: '{color.purple}{?session {?consume_tokens {consume_tokens}({consume_percent}%)}{!consume_tokens {consume_tokens}}}{color.reset}'

clients:
  # All clients have the following configuration:
  # - type: xxxx
  #   name: xxxx                                      # Only use it to distinguish clients with the same client type. Optional
  #   models:
  #     - name: xxxx
  #       mode: chat                                  # Chat model
  #       max_input_tokens: 100000
  #       supports_vision: true
  #       supports_function_calling: true
  #     - name: xxxx
  #       mode: embedding                             # Embedding model
  #       max_input_tokens: 2048
  #       default_chunk_size: 2000                        
  #       max_concurrent_chunks: 100
  #   patches: 
  #     <regex>:                                      # The regex to match model names, e.g. '.*' 'gpt-4o' 'gpt-4o|gpt-4-.*'
  #       chat_completions_body:                      # The JSON to be merged with the chat completions request body.
  #   extra:
  #     proxy: socks5://127.0.0.1:1080                # Set https/socks5 proxy. ENV: HTTPS_PROXY/https_proxy/ALL_PROXY/all_proxy
  #     connect_timeout: 10                           # Set timeout in seconds for connect to api

  # See https://platform.openai.com/docs/quickstart
  - type: openai
    api_key: sk-xxx                                   # ENV: {client}_API_KEY
    api_base: https://api.openai.com/v1               # ENV: {client}_API_BASE
    organization_id: org-xxx                          # Optional

  # For any platform compatible with OpenAI's API
  - type: openai-compatible
    name: localai
    api_base: http://localhost:8080/v1                # ENV: {client}_API_BASE
    api_key: xxx                                      # ENV: {client}_API_KEY
    chat_endpoint: /chat/completions                  # Optional
    models:
      - name: llama3
        max_input_tokens: 8192

  # See https://ai.google.dev/docs
  - type: gemini
    api_key: xxx                                      # ENV: {client}_API_KEY
    patches:
      '.*':                                           
        chat_completions_body:                        # Override safetySettings for all models
          safetySettings:
            - category: HARM_CATEGORY_HARASSMENT
              threshold: BLOCK_NONE
            - category: HARM_CATEGORY_HATE_SPEECH
              threshold: BLOCK_NONE
            - category: HARM_CATEGORY_SEXUALLY_EXPLICIT
              threshold: BLOCK_NONE
            - category: HARM_CATEGORY_DANGEROUS_CONTENT
              threshold: BLOCK_NONE

  # See https://docs.anthropic.com/claude/reference/getting-started-with-the-api
  - type: claude
    api_key: sk-ant-xxx                               # ENV: {client}_API_KEY

  # See https://docs.mistral.ai/
  - type: openai-compatible
    name: mistral
    api_base: https://api.mistral.ai/v1
    api_key: xxx                                      # ENV: {client}_API_KEY

  # See https://docs.cohere.com/docs/the-cohere-platform
  - type: cohere
    api_key: xxx                                      # ENV: {client}_API_KEY

  # See https://docs.perplexity.ai/docs/getting-started
  - type: openai-compatible
    name: perplexity
    api_base: https://api.perplexity.ai
    api_key: pplx-xxx                                 # ENV: {client}_API_KEY

  # See https://console.groq.com/docs/quickstart
  - type: openai-compatible
    name: groq
    api_base: https://api.groq.com/openai/v1
    api_key: gsk_xxx                                  # ENV: {client}_API_KEY

  # See https://github.com/jmorganca/ollama
  - type: ollama
    api_base: http://localhost:11434                  # ENV: {client}_API_BASE
    api_auth: Basic xxx                               # ENV: {client}_API_AUTH
    models:                                           # Required
      - name: llama3
        max_input_tokens: 8192
      - name: all-minilm:l6-v2
        mode: embedding
        max_chunk_size: 1000

  # See https://learn.microsoft.com/en-us/azure/ai-services/openai/chatgpt-quickstart
  - type: azure-openai
    api_base: https://{RESOURCE}.openai.azure.com     # ENV: {client}_API_BASE
    api_key: xxx                                      # ENV: {client}_API_KEY
    models:                                           # Required
      - name: gpt-35-turbo                            # Model deployment name
        max_input_tokens: 8192

  # See https://cloud.google.com/vertex-ai
  - type: vertexai
    project_id: xxx                                   # ENV: {client}_PROJECT_ID
    location: xxx                                     # ENV: {client}_LOCATION
    # Specifies a application-default-credentials (adc) file, Optional field
    # Run `gcloud auth application-default login` to init the adc file
    # see https://cloud.google.com/docs/authentication/external/set-up-adc
    adc_file: <path-to/gcloud/application_default_credentials.json> 
    patches:
      'gemini-.*':
        chat_completions_body:                        # Override safetySettings for all gemini models
          safetySettings:
            - category: HARM_CATEGORY_HARASSMENT
              threshold: BLOCK_ONLY_HIGH
            - category: HARM_CATEGORY_HATE_SPEECH
              threshold: BLOCK_ONLY_HIGH
            - category: HARM_CATEGORY_SEXUALLY_EXPLICIT
              threshold: BLOCK_ONLY_HIGH
            - category: HARM_CATEGORY_DANGEROUS_CONTENT
              threshold: BLOCK_ONLY_HIGH

  # See https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-claude
  - type: vertexai-claude
    project_id: xxx                                   # ENV: {client}_PROJECT_ID
    location: xxx                                     # ENV: {client}_LOCATION
    # Specifies a application-default-credentials (adc) file, Optional field
    # Run `gcloud auth application-default login` to init the adc file
    # see https://cloud.google.com/docs/authentication/external/set-up-adc
    adc_file: <path-to/gcloud/application_default_credentials.json> 

  # See https://docs.aws.amazon.com/bedrock/latest/userguide/
  - type: bedrock
    access_key_id: xxx                                # ENV: {client}_ACCESS_KEY_ID
    secret_access_key: xxx                            # ENV: {client}_SECRET_ACCESS_KEY
    region: xxx                                       # ENV: {client}_REGION

  # See https://developers.cloudflare.com/workers-ai/
  - type: cloudflare
    account_id: xxx                                   # ENV: {client}_ACCOUNT_ID
    api_key: xxx                                      # ENV: {client}_API_KEY

  # See https://replicate.com/docs
  - type: replicate
    api_key: xxx                                      # ENV: {client}_API_KEY

  # See https://cloud.baidu.com/doc/WENXINWORKSHOP/index.html
  - type: ernie
    api_key: xxx                                      # ENV: {client}_API_KEY
    secret_key: xxxx                                  # ENV: {client}_SECRET_KEY

  # See https://help.aliyun.com/zh/dashscope/
  - type: qianwen
    api_key: sk-xxx                                   # ENV: {client}_API_KEY

  # See https://platform.moonshot.cn/docs/intro
  - type: openai-compatible
    name: moonshot
    api_base: https://api.moonshot.cn/v1
    api_key: sk-xxx                                   # ENV: {client}_API_KEY

  # See https://platform.deepseek.com/api-docs/
  - type: openai-compatible
    name: deepseek
    api_key: sk-xxx                                   # ENV: {client}_API_KEY

  # See https://open.bigmodel.cn/dev/howuse/introduction
  - type: openai-compatible
    name: zhipuai
    api_key: xxx                                      # ENV: {client}_API_KEY

  # See https://docs.endpoints.anyscale.com/
  - type: openai-compatible
    name: anyscale
    api_base: https://api.endpoints.anyscale.com/v1
    api_key: xxx                                      # ENV: {client}_API_KEY

  # See https://deepinfra.com/docs
  - type: openai-compatible
    name: deepinfra
    api_base: https://api.deepinfra.com/v1/openai
    api_key: xxx                                      # ENV: {client}_API_KEY

  # See https://readme.fireworks.ai/docs/quickstart
  - type: openai-compatible
    name: fireworks
    api_base: https://api.fireworks.ai/inference/v1
    api_key: xxx                                      # ENV: {client}_API_KEY

  # See https://openrouter.ai/docs#quick-start
  - type: openai-compatible
    name: openrouter
    api_base: https://openrouter.ai/api/v1
    api_key: xxx                                      # ENV: {client}_API_KEY

  # See https://octo.ai/docs/getting-started/quickstart
  - type: openai-compatible
    name: octoai
    api_base: https://text.octoai.run/v1
    api_key: xxx                                      # ENV: {client}_API_KEY

  # See https://docs.together.ai/docs/quickstart
  - type: openai-compatible
    name: together
    api_base: https://api.together.xyz/v1
    api_key: xxx                                      # ENV: {client}_API_KEY