rendezqueue / rendezllama

CLI for llama.cpp with various commands to guide, edit, and regenerate tokens on the fly.
ISC License
11 stars 1 forks source link

feat(chat): Multiple chatting characters in order #3

Closed grencez closed 1 year ago

grencez commented 1 year ago

If there were more than just 2 characters, we could do a lot more cool things:

Let's restrict this feature to a simple rotating order for now and make sure it can be changed with on the fly with a command.

grencez commented 1 year ago

Perhaps these lines should be optionally transient and disappear. This this feature could subsume #5.

This and some other things are blocked on real sxproto parsing, so I'll be prioritizing that in https://github.com/fildesh/fildesh/issues/135.

grencez commented 1 year ago

Let's just say these are all the confidant's line prefixes. I don't know if it's a good idea to bother making them optional or mutable during chat, so I won't.

((confidant_prefixes) "{{char}} thinks:" "{{char}}:")

grencez commented 1 year ago

I'm getting good results. Going to make the setting include the protagonist prefix too.

((chat_prefixes) "{{user}}:" "{{char}} goal:" "{{char}}:")

grencez commented 1 year ago

Needs an example and documentation.

grencez commented 1 year ago

I think this needs to be an array of messages instead. Something like:

((chat_prefixes)
 (() (key "{{user}}:"))
 (() (key "{{char}} goal:"))
 (() (key "{{char}}:")))

Or maybe we can just accept the current format of ((chat_prefixes) "{{user}}:" "{{char}} goal:" "{{char}}:") in the long term alongside the message-array one.

grencez commented 1 year ago

Here how about we split the difference. Let's use manyof syntax so the 2 work:

(((chat_prefixes))
 "{{user}}:"
 ((inner_monologue)
  (prefix "{{char}} goal:")
  (rollforget_keep_count 4)
  (repeat_window 0))
 "{{char}}:")
grencez commented 1 year ago

The 2-"person" mode (protagonist & confidant) now functions the same as the multiple character case.