Skip to main content

ai对话

触发方式

群聊内:@bot 你好

私聊:你好

配置文件

文件来源 config/api.yaml

#这里的可能和正式文件有差异,但关键配置项会在这里讲明白,这些不会改变。
llm:
model: gemini #选择使用的模型(这里是大类别,具体模型在底下填),用什么配什么
#模型大类可选openai gemini两种。剩下自己在下面配置。
system: "你现在是一只猫娘,你的名字是vilm,我的名字是{用户},是你的主人。"
func_calling: True #是否开启函数调用功能
prefix:
- "."
- "。"
- "叮咚鸡"
enable_proxy: False
max_history_length: 100 #最大聊天记录条数
Quote: False #回复时是否引用
focus_time: 60 #单次触发对话后持续有效时间
openai:
api_keys:
- YOUR_API_KEY_1
- YOUR_API_KEY_2
model: glm-4-flash
quest_url: https://open.bigmodel.cn/api/paas/v4/chat/completions #完整调用地址。只填base_url不行
gemini:
api_keys:
- YOUR_API_KEY_1
- YOUR_API_KEY_2
model: gemini-2.0-flash-001
base_url: https://generativelanguage.googleapis.com #后面的/v1/beta什么的会自动填充

函数调用

llm:
func_calling: True #是否开启函数调用功能

bot支持通过【函数调用】,实现更灵活的指令触发。 比如

搜书的原指令为: 搜书{书籍名/作者名} #如  搜书资本主义与现代社会理论
当你开启【函数调用】后,可以通过下面的方式艾特bot触发,不必再拘泥于特定的指令格式。
比如 @bot 帮我找找资本主义与现代社会理论这本书
或者 @bot 资本主义与现代社会理论这本书怎么样

触发机制

llm:
prefix:
- "."
- "。"
- "yucca"
focus_time: 60 #单次触发对话后持续有效时间

这两项允许你,

  • . 或 。 或 yucca作为前缀触发ai对话而无需艾特,你可以继续像这样增加匹配的前缀。
  • 在一次触发对话后,60s内无需艾特,持续对话持续刷新时间。

清理对话

/clear
/clear@某人 # 主人功能
/clearall # 主人功能
如开启函数调用,可直接告诉bot【清理当前对话】
master也可使用【清理所有人的对话记录】之类的话来清理所有人的对话记录。

多人设

data/system/chara中存放了多个角色模板,你可以继续添加(已兼容txt,json,酒馆角色卡(图片格式))

/查人设    #预期返回类似 派蒙.txt 猫娘.txt 这样的文件名列表
/切人设 {角色文件名} #比如 /切人设 派蒙.txt
/全切人设 {角色文件名} #切所有用户的人设,主人功能
# 可以使用/切人设 0或/全切人设 0来恢复到默认人设

群聊上下文读取

llm:
读取群聊上下文: false #开启上下文读取功能,可读取群聊历史消息,并根据上下文进行回复。
可获取的群聊上下文长度: 10

清理指令为

/clear group

慎用,清理群消息记录会导致词云功能丢失数据。

gemini配置方式

gemini系列是我们最推荐的模型,足量免费配额每日刷新,且在各方面表现都较为出色。

1、获取gemini apikey

先获取Gemini apikey (获取过程需要开启代理,打不开/地区不可用就是你机场不行。)

打开config/api.yaml

#这里省略了其他配置项,不代表你可以随便删除其他配置项。
llm:
model: gemini #选择使用的模型大类。
system: "你现在是一只猫娘,你的名字是{bot_name},我的名字是{用户},是你的主人。"
enable_proxy: False
gemini: #https://ai.google.dev/
api_keys:
- YOUR_API_KEY_1 #这里填入你的apikey,有几个填几个,多key填写示例如下。
- YOUR_API_KEY_2
model: gemini-2.0-flash-001
base_url: https://generativelanguage.googleapis.com #后面的/v1/beta什么的会自动填充

2、配置正向代理/反向代理(二选一)

只配置apikey,但不配置proxy是不行的。

反向代理

反向代理配置难度较低,建议使用。建议自行搭建反向代理,教程

你也可以去我们的q群913122269获取我们提供的免费反代地址。

#省略了其他配置项,不代表你可以随便删除其他配置项。
llm:
model: gemini
system: "你现在是一只猫娘,你的名字是{bot_name},我的名字是{用户},是你的主人。"
enable_proxy: False
gemini:
base_url: 反代地址 #参照上文自行搭建或在我们的群里获取

正向代理

取决于你自己的代理软件,我不能给你一个准确答案。如果你看不懂就老老实实用反代。

#省略了其他配置项,不代表你可以随便删除其他配置项。
llm:
enable_proxy: True
proxy:
http_proxy: "http://127.0.0.1:10809" #本地代理软件的的http代理端口。

3、函数调用与联网搜索

并非所有模型都支持这两个功能。在gemini 查看所有模型与模型对应能力 你可以看到类似下面的内容

Gemini 2.0 Flash

Gemini 2.0 Flash 提供新一代功能和增强型功能,包括卓越的速度、原生工具使用、多模态生成以及 100 万个 token 的上下文窗口。

模型详情

属性说明
模型代码models/gemini-2.0-flash-001
保存支持的数据类型输入源:音频、图片、视频和文本,输出:音频(即将推出)、图片(即将推出)和文本
令牌限制输入令牌限制:1,048,576,输出令牌限制:8192
速率限制2,000 RPM,4,000,000 TPM
功能函数调用:支持,代码执行:支持,搜索:支持
版本如需了解详情,请参阅模型版本模式。最新电子邮件的接收日期:gemini-2.0-flash-001
最新更新2025 年 2 月
知识截止分数2024 年 8 月

你可以看到,它支持函数调用和联网搜索。但这里需要注意,函数调用和联网搜索不能同时开启,否则两个都没法用

于是我们得到了最终配置文件

#此处省略其他配置项,不代表你可以随便删除。
llm:
model: gemini
system: "你现在是一只可爱的猫娘,你的名字是{bot_name},现在与你对话的人的名字是{用户}。"
func_calling: true #是否开启函数调用功能
联网搜索: false #官方版本联网搜索,与函数调用不可同时开启
联网搜索显示原始数据: true #此处联网搜索基于函数调用实现。
enable_proxy: true #正向/反向代理配置不再赘述
gemini:
api_keys:
- 你的key
model: gemini-2.0-flash-001 #模型代码中的模型名称
base_url: https://generativelanguage.googleapis.com #正向/反向代理配置不再赘述

openai接口标准模型配置方式

文心、讯飞星火、chatglm、豆包、kimi都可以使用此配置方式

兼容openai接口标准的模型配置方式都是大差不差。

接入deepseek

在开始之前,你需要知道,eridanus所依赖的llm功能——函数调用,在deepseek的系列模型中要么没有,要么一坨(截至2025.3.5),如果你坚持要用deepseek的模型,那就关掉函数调用,以免白白浪费你的apikey余额。

deepseek文档我们可以看到

DeepSeek API 使用与 OpenAI 兼容的 API 格式,通过修改配置,您可以使用 OpenAI SDK 来访问 DeepSeek API,或使用与 OpenAI API 兼容的软件。
PARAMVALUE
base_urlhttps://api.deepseek.com
api_keyapply for an API key

得到的信息如下

先去申请apikey,得到sk-da75a***********************6f47

然后在config/api.yaml中配置

#这里省略了其他配置项,不代表你可以随便删除其他配置项。
llm:
model: openai #模型大类选择openai。
system: "你现在是一只猫娘,你的名字是{bot_name},我的名字是{用户},是你的主人。"
func_calling: false #deepseek r1截至2025.2不支持函数调用。请阅读deepseek文档确认模型是否支持函数调用。如不支持,则将此项改为false
openai:
enable_official_sdk: True #是否使用官方sdk,如果不使用,则为直接发送post请求。
api_keys: #继续像这样添加apikey
- YOUR_API_KEY_1
model: deepseek-reasoner
quest_url: https://api.deepseek.com #如使用官方sdk,则只填base_url,否则填完整url。
temperature: 1.3
max_tokens: 2048
CoT: false #显示思维链
使用旧版prompt结构: false #部分模型需要使用旧版prompt结构

假如存在网络问题需要配置代理,请查阅【gemini配置正向代理】,这里是通用的。

接入kimi

阅读kimi文档,我们可以看到:

Kimi API 兼容了 OpenAI 的接口规范,你可以使用 OpenAI 提供的 Python 或 NodeJS SDK 来调用和使用 Kimi 大模型,这意味着如果你的应用和服务基于 openai 的模型进行开发,那么只需要将 base_url 和 api_key 替换成 Kimi 大模型的配置,即可无缝将你的应用和服务迁移至使用 Kimi 大模型,代码示例如下:
from openai import OpenAI

client = OpenAI(
api_key = "$MOONSHOT_API_KEY",
base_url = "https://api.moonshot.cn/v1",
)

completion = client.chat.completions.create(
model = "moonshot-v1-8k",
messages = [
{"role": "system", "content": "你是 Kimi,由 Moonshot AI 提供的人工智能助手,你更擅长中文和英文的对话。你会为用户提供安全,有帮助,准确的回答。同时,你会拒绝一切涉及恐怖主义,种族歧视,黄色暴力等问题的回答。Moonshot AI 为专有名词,不可翻译成其他语言。"},
{"role": "user", "content": "你好,我叫李雷,1+1等于多少?"}
],
temperature = 0.3,
)

print(completion.choices[0].message.content)

得到的信息如下

申请apikey,得到sk-pibXoRr***********************vNUq1 然后在config/api.yaml中配置

#这里省略了其他配置项,不代表你可以随便删除其他配置项。
llm:
model: openai #模型大类选择openai。
system: "你现在是一只猫娘,你的名字是{bot_name},我的名字是{用户},是你的主人。"
func_calling: true #kimi支持函数调用功能,可以开启。
openai:
api_keys: #继续像这样添加apikey
- sk-pibXoRr***********************vNUq1 #这是个示例,你需要替换为你自己申请的apikey
model: moonshot-v1-8k #选择使用的模型,这里是moonshot-v1-8k,其他模型需要查看kimi文档。
#在请求地址部分,一般都是base_url+/v1/chat/completions
quest_url: https://api.moonshot.cn/v1/chat/completions #完整调用地址。只填base_url不行