Replies: 4 comments 8 replies
-
wow this is mind blowing! thank you so much for putting the effort into this! is there anyway i can get access to test it out? Would be even more powerful if we come up with a way to let user generate the flow without having to go to UI to construct |
Beta Was this translation helpful? Give feedback.
-
Hi @njfio , can I also get access please? |
Beta Was this translation helpful? Give feedback.
-
While I found the proof of concept for Fluent to be incredibly useful the closer I got to releasing it the more I realized how much setup is involved just to get it running. Setting up fluent is very straightforward thought cumbersome but to be useful at all it requires flowise chatflows to be configured. I work with engineers and devs every day and have been surprised by how many feel intimidated/overwhelmed by the ecosystem presented by Flowise. This isn't a problem with Flowise specifically. To someone just entering the AI and LLM landscape it's all a lot to understand. How X goes where and what works with what and all those questions. Even though, in my opinion, Flowise dumbs this down as simplistic as possible, it's still a lot to come to terms with for those just starting. I also played with deploying Flowise on many different providers and each time I realized my configurations and keys needed to be restored, reconfigured, re-entered, etc. It was a lot, like a lot. I started to dread it. I also found that long-term nodes on chatflows get deprecated in favor of newer and better components which becomes a lot to deal with if you have a lot of chatflows configured. So, I started a rewrite of the proof of concept to solve a bunch of these challenges ( for my use case which is all CLI based) and it's about 50% feature complete now. It has several enhancements that solve a variety of the challenges I experienced over my time working with Flowise and Fluent. Number 1 new feature, integration of amber, https://github.com/fpco/amber to store the keys and any other aspect of the configuration desired. Amber is an amazing little utility and the end functionality in Fluent was unexpectedly awesome. Amber encrypt secrets in a yaml file that is cryptographically secure and is unlocked with a private key stored as an env which allows it to securely provide credentials in pipelines. My current file's contents look like this: file_format_version: 1
public_key: cce0cc20077c58ebe6422dfa87c0701c44bff83755922ed20bf4a7ec676f4a07
secrets:
- name: AMBER_ANOTHERWEBSERVICE_NJF
sha256: 6b2b7498466801ea974e10a19de5c8c9deb5bc95ec98992a46a291d02a1f7b60
cipher: 7d7725504623b21f90a0fada17d05ecaf0e1bc4f709baabc9f325dd4f1d0091c97d32a5aa77534e9ce0b678797418701474a018b7ff0535bc7cd3e8ccfcf57e4760c512ff6e3082c4e94999beabe148898b1a4fdcba26746b292455
- name: AMBER_FLUENT_ANTHROPIC_KEY_01
sha256: 8f66c5f92b94d9228e9d32b30a29f3848fcd4ad9f4ef1ec4d153559be015c3e9
cipher: da52538627a1a409458d749f43bf74138fd9aa9b0a8dc9e441ef15035aaae84f4b111cfa894ee9462231f90401177db64dc72c2c7dd8c38f79c36e61a10f592a4fcb1b973220c35854370ec57fdc62886d87398480cdd01aa75b7913712633147628606c9ad832b8b2e837937b7f6e70fd4e1615a23b3d72e5a26d2838c6e03728430032a4b8cbe16a3be07a98136cc191d3a56709a2b23efc76e06
- name: AMBER_FLUENT_GROQ_API_KEY_01
sha256: 89f7aeec36590e47a2eab221b2381dd70343ae36b13e8e17a9f6dc62f1cb80be
cipher: 6ff9c99f465f1354cc8a107d5cbbd1165be08dd1c0a77b67bbb22dd4866dcb2a2bb48622edeb0bfcc1f3b100b1a83871e6ea90dde44ee9b4909641af7bfd69790b45518884bb686cc22045441ba48d668d87b3893869bc25bf1c21777d2c132322349f387b8730b
- name: AMBER_FLUENT_MISTRAL_KEY_01
sha256: 9731bc831969cfa36c45cbd7fb6b757c9cfbba91a96a64a847f9b6205d84fd2a
cipher: 1c0bd5f0a66ee85221bbd179cf342b191105e36413a90d3740a6e5c5ef716939df7144ebb1a1bbb9eb068664c76c335bc455c6bfe6b3ebb7bc40fdcea97cb4e4ce46eef06d95f127ecafe3a985a0ca56
- name: AMBER_FLUENT_OPEN_API_KEY_01
sha256: 50955d905232e8fb90d164e87fbf4a3fd49186a3220ef1b3197bf64725340483
cipher: 04705361f04fa1e21d36b444ca36a8adfcf749564625cc3752bf3908a96aa00168683fe6855c9d14f20d082e3a9fa57e7493a1540c3932697c7242c8be5e0cbb4612b19b90933f6661e62eaa57349d54713f0d32e943d2ce6c6fdcdcaa350ba7ac7b0
- name: AMBER_FLUENT_SEARCHAPI_KEY_ID_01
sha256: 3b378ff8071fe87a6311f10bcdd3f6171e1a0d08be1e4c4a70561ad9f2b24ec6
cipher: 09aad10b270d089bbc5ec6ee160d217b65100c4e2bd0a8c06e16134efaa69868458fbd0b5b4559e43f6fb49c3bb691aabbc37c67ddf2d0257245b2068cc46139103b8b00b2d932c
- name: AMBER_FLUENT_SERPAPI_KEY_01
sha256: fb632d090f352a7cddd40e2bdb25f72d2b1c9d5db075aacfde07ac395bf2a3de
cipher: 72add13fc48436e451dd78d2dd2fa68fc5725edc89701db0a7a3db1073e16f5109ba2be9a99dd42ed51a66edd7caa7a600406c199df935fb880a64975faa4f3dd933f6fa471932250f7242a29d60191c096186c73cf2b9d42d7f747c9dd78a0ea9d987b7bb606b16821b71c45ee28a7
- name: AMBER_FLUENT_SESSION_ID_01
sha256: d215bada471ed79a9ec9baf5e8d23a57c72aa195e37e81bea3050690340a2dd9
cipher: 14d063487e9602ab97aae558ec5f2c2528ec667e5fbce9caca0c2586baf6cd466b49e90355fd19d67b19323cd37156679d1497684021c40ebc70d
- name: AMBER_FLUENT_ZEP_MEMORY_KEY_01
sha256: 136bb9b51f44dc40238834475695f11c40970fccdeb4ab27766e6f7a405c32f1
cipher: 7b5fc863ce222f5baae691a2dae429026f373e2f6729300902dca3ec147bb86ecea0115e4e0427e5ae50911ae032e7bc910c89d4a97b3807564b593b0d8dd1082eb8123a8c6d75b4e8cc4907d1baea92d1cc0098926a92573a759e0037f03fe41df653fad556301e81b734e2f1e7d2923ad75e1a5f1d818f7aeda805aa88b533b2e7b21d785d99182bf436936011c64e4063be5f609e0ba57c43d456cee39e3f3853b368cae7b2138cf75a87d08129cf99a7a3e1ef222f24bad87b992b9ee8e3c57721a48
- name: AMBER_LEONARDO_AI_KINO_XL_MODEL_ID
sha256: 3b582f348b95a61ddbaa7ac3167a3f04f8e5e3178f0000f84ca8f0391f8aa1c1
cipher: f48d253696fb03637462505e578cc8b8f759f24fe3b6a3c579237c1288c61d280dc457baf44dd39764aa195230bf748a0f824e81bdd00f918ab610128f235ba4591d69f7bdc4fd1347c43d54f8440b5447c29775
- name: AMBER_LOCAL_FLUENT_DEFAULT_KEY
sha256: d6e8795e9d4a370659fce1ea86f03cb04efcc13b0927515faadc4e73b2a261f
cipher: 0cd6f38d643190e0ab2e7ce74550d01f9e609d640358967114fe610e528e2f4645bc2c340e9a438e7e8c25b851ebc1a425e0cb74edab1c6a947a103a8fd5e1087fdcbd9140cef78bb79de0bd9ff1e5d399e4b1856b90b31e5926ced
- name: AMBER_MAKE_LEONARDO_IMAGE_POST
sha256: d6e8795e9d4a370659fce1ea86f03cb04efcc13b0927515faadc4e73b2a261f
cipher: 028fe2972087cc0211f0b6bfc1e6fd7365db93904d8b75580b3c2c9cdc695a09175a3ecbe2a601da51f5bbf12f48ade1724ed6286c24a125f3c5d3e6f9355956f291a361a4f13ad00d9ec66363db975f4929b6e5563cb30092f9dad
This is an example XML Agent with SerpAPI and Web Browsing tools in the chatflow. It's configured on a publicly available chatflow. The fluent configuration file is pasted below the image. Notice how the names in the amber file line up with values in the configuration file. For example: {
"name": "SonnetXMLAgentAnowtherWebService",
"protocol": "https",
"hostname": "container-UNIQUECONTAINERID.containers.anotherwebservice.com",
"port": 3000,
"chat_id": "8ea46fa9-4aef-4184-a399-c588c576d148",
"request_path": "/api/v1/prediction/",
"sessionId": "",
"bearer_token": "AMBER_ANOTHERWEBSERVICE_NJF",
"overrideConfig": {
"sessionId": "AMBER_FLUENT_SESSION_ID_01",
"anthropicApiKey": "AMBER_FLUENT_ANTHROPIC_KEY_01",
"stripNewLines": true,
"modelName": {
"chatAnthropic_0": "claude-3-sonnet-20240229",
"chatOpenAI_0": "gpt-3.5-turbo-16k",
"openAIEmbeddings_0": "text-embedding-3-small"
},
"openAIApiKey": {
"openAIEmbeddings_0": "AMBER_FLUENT_OPEN_API_KEY_01",
"chatOpenAI_0": "AMBER_FLUENT_OPEN_API_KEY_01"
},
"serpApiKey": "AMBER_FLUENT_SERPAPI_KEY_01",
"SystemMessage": "You are a helpful assistant. Help the user answer any questions.\n\nYou have access to the following tools:\n\n{tools}\n\nIn order to use a tool, you can use <tool></tool> and <tool_input></tool_input> tags. You will then get back a response in the form <observation></observation>\nFor example, if you have a tool called 'search' that could run a google search, in order to search for the weather in SF you would respond:\n\n<tool>search</tool><tool_input>weather in SF</tool_input>\n<observation>64 degrees</observation>\n\nWhen you are done, respond with a final answer between <final_answer></final_answer>. For example:\n\n<final_answer>The weather in SF is 64 degrees</final_answer>\n\nBegin!\n\nPrevious Conversation:\n{chat_history}\n\nQuestion: {input}\n{agent_scratchpad}",
"temperature": 0.9
},
"timeout_ms": 50000
} What Fluent will now do on every execution is a dynamic replacement of any value in the configuration file that starts with This means one chatflow can be MANY different fluent configurations. That same flow can have a different configuration using Haiku or Opus (or whatever) and turning the creativity down to 0 for example just by duplicating that configuration and altering the modelNames. This is incredibly useful for testing and evaluation of configuration settings and LLM outputs. I'm adding Media (image/speech) Upload, Vector Upsert, and Document Loader functions soon. I will be releasing the new version for testing soon. A few demo recordings of the original proof of concept.
Nick |
Beta Was this translation helpful? Give feedback.
-
I'd love to get access to this! Not being able to interact more directly with the Flowise flows is a huge drawback for me. It would be one of the few things keeping me from using Flowise long-term instead of an alternative such as Prompt Flow from Microsoft |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi FlowiseAI community,
I'm developing a new open source command line tool called
fluent
(Flowise Language Utility for Enhanced Networked Transactions) private repo currently that allows you to easily interact with FlowiseAI workflows from the terminal. Fluent aims to provide a simple, streamlined interface for running workflows, handling input/output, and customizing behavior via an extensible configuration system.Some key features of Fluent:
The core logic is implemented but I'm looking for some private alpha testers to try it out, provide feedback, and help shake out any bugs before a wider release. You'd get early access to the tool to use in your own projects.
If you're interested in testing Fluent, please reply here or DM me. I'm looking for folks comfortable using command line tools who can provide detailed feedback. Familiarity with Go development is a plus for code review feedback but not required.
Thanks! I'm excited to share Fluent with the community and make FlowiseAI workflows more accessible and useful for everyone.
Nick
A few examples in use
Note: The preceding messaage was generated through a fluent workflow
cat src/*.rs
reads the contents of all the Rust source files in thesrc
directory and pipes the output to the next command|
pipes the output ofcat
to thefluent
commandfluent AnthropicOpusXMLFunctionAgent
invokes thefluent
command, passing it theAnthropicOpusXMLFunctionAgent
argument and using the contents of 'stdin' in the 'context' of the question.An Example Interview Script
Attached below is an example interview with a GPT4 agent interviewed Another GPT4 Turbo agent, Gemini, Perplexity, Mixtral, GrokOpenLLama, and AnthropicOpus. It all started with, what is the meaning of life.
GPT4 has a good view of it.

interview.sh GPTFunctionAgentWithMemoryAndBrowsingCreative "Speculate - what is the meaning of life?" 20 ChatGPT4TurboToolAgent GeminiStraight PerplexityFunction MistralToolAgent GrokLPUFunctionAppLLama270b AnthropicOpusXMLFunctionAgent
interview_log.txt
interview.script.txt
Simple shell script to create long form blogs
The attached file was generated from that script. It's just an example, so much is possible and this is just me playing around.
outputpost.md
The Help Page
Summary
Fluent opens up the amazing FlowiseAI ecosystem by integrating it with the command line (linux/macos only right now). It's mind blowing what's possible and I'm only scratching the surface.
Programmed in Rust. It's a working build with poor tests, thats the next step.
Beta Was this translation helpful? Give feedback.
All reactions