Closed Lukangkang123 closed 1 year ago
建议:
Session可以作为 ChatGPTOfficialHandler 的一个实例属性,Session内部维护一个map(用户id => 消息),ChatGPTOfficialHandler就不需要操作message这些了, 大概就像这样
class ChatGPTOfficialHandler extends BaseMessageHandler {
name = 'officialAPI'
session = new Session()
}
class Session {
_trackMap: Map<number, string[]>
pushTrackMessage (userId: number, message: string) {
// ....
}
getById (userId: number) {
return this._trackMap.get(userId)
}
}
总之感谢pr!!
我晚上回去确认可行就合并
另外 需要扩展 config 直接添加即可,这个可以加到 L25
感谢pr !!!
建议:
- R97 数组容量本身就已经根据配置的大小设定好了,添加的时候或许无需判断,直接一进一出即可,
- Session可以作为 ChatGPTOfficialHandler 的一个实例属性,Session内部维护一个map(用户id => 消息),ChatGPTOfficialHandler就不需要操作message这些了, 大概就像这样
class ChatGPTOfficialHandler extends BaseMessageHandler { name = 'officialAPI' session = new Session() } class Session { _trackMap: Map<number, string[]> pushTrackMessage (userId: number, message: string) { // .... } getById (userId: number) { return this._trackMap.get(userId) } }
总之感谢pr!! 我晚上回去确认可行就合并 但是直接一进一出的话,不就相当于每次数组里就只有一个元素吗?
不会的, R76
Array.from(new Array(this.config.maxTrackCount), () => '')
这段代码就相当于创建了一个固定长度的数组
整个操作就可以理解为维护一个定长的队列,尾部添加一个,首部就移除一个
比如maxTrackCount=3的时候
结果就是3个空字符串 ['', '', '']
添加的时候,尾部先加一个(push) ['', '', '', 'message'] 头部再剔除一个 (shift) ['', '', 'message']
表述的可能不严谨,但是大体上应该没问题
不会的, R76
Array.from(new Array(this.config.maxTrackCount), () => '')
这段代码就相当于创建了一个固定长度的数组
整个操作就可以理解为维护一个定长的队列,尾部添加一个,首部就移除一个
比如maxTrackCount=3的时候
结果就是3个空字符串 ['', '', '']
添加的时候,尾部先加一个(push) ['', '', '', 'message'] 头部再剔除一个 (shift) ['', '', 'message']
哦哦,明白了,不过还有个问题,你写的这个_trackMap没有时间,要么还是把Value设置为一个类,要么直接再创建另一个Map来保存id和时间的映射。
要么还是把Value设置为一个类
可以的,我建议就这种吧
要么还是把Value设置为一个类
可以的,我建议就这种吧
好的,可以可以~
每次私聊一个会话,一个QQ群一个会话。默认每次会话过期时间为五分钟(可作为超参数)。新建session和发送一条消息后均在控制台打印日志(方便查看每个保留的会话内容)。