diff --git a/README.md b/README.md index 299472e..791effa 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,3 @@ This is a Java library you can write scripts for to support an api with conversational language models -The scripts are written in Groovy because it's powerful, but I'm thinking about other languages like Lua (which has not many features but I think some can be added) - -Right now there is no sandboxing so every script has access to what this library has access - -Don't take everything I wrote here for granted because I still have to think about how to make this stuff \ No newline at end of file +I can't really say much because I'm still working out stuff so see `thinking.txt` \ No newline at end of file diff --git a/thinking.txt b/thinking.txt new file mode 100644 index 0000000..4a586d7 --- /dev/null +++ b/thinking.txt @@ -0,0 +1,58 @@ +okay so three things: +1. the chat, thread, conversation itself +2. the network thing +3. and something to script all that? + +the chat I think it may be just messages, like user assistant and so on with an optional system prompt +however that may cause issues with tool models, but let's ignore that for now +oh yeah and something to convert the Chat into something the api accepts, but I think that may be just a function + +now about requests +I think that's consistent so get post etc. requests +with text or json request body +that responds with a text or json body +but how? +I think a DIY interface is the way since each (or every?) platform has a different networking implementation +we could provide a reference implementation, but I don't know + +okay now about scripting +the language that scripts are written in is Groovy +which may be too powerful to be called a scripting language but whatever +so: +- we need to label scripts somehow so a record (actually an object because I want to be compatible) with name, author, version is enough + and other metadata like streaming support or billing? billing later and TODO streaming should be also a setting +- permissions... that for later, including sandboxing +- settings, oh I just came up a name "source" + but as for settings maybe just a list of label, TODO type (slider, text, choice list etc.) and value range (how with various types is for later) +- and how it actually works, like when a message is sent we just call a function with the chat object. + it should return a ChatResponse which TODO has something to stream from and some other metadata? + +choice of language +lua: + I considered Lua, but I don't know, it may be simpler to beginners (not to me though) but it's not as powerful and like javascript messy, inconsistent, vague etc. + actually I just found out Lua has coroutines, so maybe I was wrong + and a few more dependencies won't hurt +other languages: + I need a runtime that's maintained and up to date with the language, that doesn't rely on native libraries, and that wouldn't take much storage +here's what claude recommended to consider: (I only edited the headers) +| Language | JVM-based | Java Interop | Native Libraries | Maintenance | Sandboxing | CRINGE Notes | +|----------------------|-----------|--------------|----------------------|-------------|----------------------|-------------------------------------------------------| +| Groovy | Yes | Excellent | Not required | Active | Yes | Java's cool cousin who brings beer to family reunions | +| Kotlin | Yes | Excellent | Not required | Very active | Yes (careful config) | The overachiever making Java feel insecure | +| Lua (LuaJ) | Yes | Good | Not required | Moderate | Yes | The tiny language that could (and did) | +| JavaScript (GraalVM) | Yes | Good | Not required | Active | Yes | "I'm everywhere!" - JavaScript, probably | +| Python (Jython) | Yes | Good | Not required | Moderate | Yes | Like a snake in Java clothing | +| Scala | Yes | Excellent | Not required | Active | Yes (careful config) | For when you want your code to look like algebra | +| Clojure | Yes | Good | Not required | Active | Yes | Parentheses enthusiast's dream come true | +| Ruby (JRuby) | Yes | Good | Not required | Active | Yes | The language that makes programmers feel like poets | +| BeanShell | Yes | Excellent | Not required | Less active | Yes | Java's echo... echo... echo... | +| Rhino | Yes | Good | Not required | Less active | Yes | The JavaScript engine that refuses to go extinct | +| Frege | Yes | Good | Not required | Less active | Yes | Haskell's attempt at Java world domination | +| COBOL | Partially | Limited | Often required | Limited | Limited | Your grandpa's favorite programming language | +| Piet | No | Very limited | Requires interpreter | Minimal | N/A | For when your code should literally be a work of art | +| C# | No | Limited | Often required | Very active | Yes | Java's arch-nemesis with a Microsoft accent | + + +similar thing probably exists... I'm sure it does, but I do it as I'd like, maybe it will end up being better +sorry for such mess, I'm typing fast so I don't forget, and I'm out of water as for now, and distracting music +okay so my 22 track favorite list just ended so bye \ No newline at end of file