A framework for LLM-powered interactions
Project description
longchain
Usage
Quest- The main object. Ititialize it, then callasyncio.run(quest.run())to run it.Path- A Path is one "step" in a player's experience.ActionResolver- This is the real decision-making part of thePath. The two main ones are theSequentialActionResolver, which takes severalActions and just runs them in order, and theLlmActionResolver, which uses an LLM to decide what to do.starts_without_player_action- If this parameter isTrue, then aChangePathActionwithnext_action='path'can immediately call thisActionResolverwithout waiting for player input.
AgentAction- This is a single step a path takes. It's something like sending a message or moving to another path. They have anext_actionparameter which controls whether the player is prompted for an input or not before the next action happens.corevsimplvsplugins-coreis the main part of the library,implis the implementation of thecoreinterfaces, andpluginsare more niche implementations. For example, the path following code is incore, theLlmActionResolveris inimpl, and the Bag utilities are inplugins.Datastore- This is an interface for the quest to keep player state. The only one currently implemented isjsonfile, but another one could be implemented for a database or something.Messager- Like Datastore, this is an abstraction layer that allows the quest to send messages to the player. The only one currently implemented isslack.LlmActionResolver- There's a lot here so it gets its own bullet point. The LLM automatically talks to the player, and you can addLlmTools in theagent_actionsparameter to allow it to do more. Thesystem_promptparameter can either be a string or a callable taking anLlmContext. This allows the system prompt to change based on what's going on, which is recommended (LLMs are not good at keeping information secret).LlmTool- These describe an action the LLM can take.descriptionshould tell the LLM when to call the tool.paramsis a list ofLlmToolParams, which have anameand aschema(which is a JSON Schema object).availableandactionare callables that take anLlmContextand return a boolean and anAgentActionrespectively.availableshould returnTrueif the tool can be used, andactionshould return theAgentActionto take if the tool is used. These both getLlmContexts, andactionalso gets adictof the params the LLM called the action with.strictcan turn on structured output, which forces the LLM's output to conform to theparamsperfectly but disables some JSON Schema properties. See more in the OpenAI docs.. Ifstrictis off, don't trust the LLM to call your function correctly.
Example
There is an example project in the examples folder.
Development
to build:
.\venv\Scripts\activate
py -m build
python -m twine upload dist/*
to regenerate the bag api:
- download the update bag.proto
pip install grpcio grpcio_tools- run
cd .\src\longchain\plugins\bag\api\ - run
python -m grpc_tools.protoc -I . --grpc_python_out . --python_out . --pyi_out . bag.proto - Go to the generated bag_pb2_grpc.py and change the
bag_pb2import toimport longchain.plugins.bag.api.bag_pb2 as bag__pb2
Naming
It's a tool for making long chains of NPC interactions.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
longchain-0.4.2.tar.gz
(29.6 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
longchain-0.4.2-py3-none-any.whl
(33.3 kB
view details)
File details
Details for the file longchain-0.4.2.tar.gz.
File metadata
- Download URL: longchain-0.4.2.tar.gz
- Upload date:
- Size: 29.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb31d809ad3a863e387f5bd2b0ee682a291649429efe5d57a3353fdb90367e99
|
|
| MD5 |
e357e80b701e123bcf5b1483870924ec
|
|
| BLAKE2b-256 |
2dc2ac5b6c5b71d4a5d61c757cb1f60e8c40c743e670543c91db49dc58e865c5
|
File details
Details for the file longchain-0.4.2-py3-none-any.whl.
File metadata
- Download URL: longchain-0.4.2-py3-none-any.whl
- Upload date:
- Size: 33.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72fd681c74de3099fb9168ce1edfd80bc7cbdb259f47ca9958910567e90d68f9
|
|
| MD5 |
efbf9826be999d3cd9675eeab6a18762
|
|
| BLAKE2b-256 |
9b496e3ba84a1954f8cecbb271b3cff66153531611038351949e35933dc4f01d
|