I had heard about LangChain as a tool to chain various components from the world of generative AI – and also did first experiments in “real” Python code with it. But when I saw a first video on Flowise, I was amazed at how quickly the community had come up once more with a “visual wrapper” that makes the entire process so much more accessible to a wider audience.
This article shows how it is possible in a fairly simple, no-code way, even for (relative) non-techies, to harness the astonishing power of the latest generation of AI language models.
The chosen use case is a career coaching to support a professional reorientation. This iwas chosen because it is a rather practical subject and bears a certain relevance that readers can relate to.
I said “no code” above. Nevretheless, the setup is still may look complex, as it involves several components that must work together. In particular, the process needs
If this sounds “techie” to you… never mind, you don’t need to bother. Consider “embeddings” the natural language of Large Language Models. And, just like in the real world: if you want to talk to someone, you better speak his/her language. So to use e.g. chatGPT, you first need to translate everything you feed to it to its own language. And because the language is so weird (1536 flowpoint numbers between 0 and 1 stored as “vector” from what I understood so far….), you better remember the translations of what you feed to or ask chatGPT …. and this you do by storing these translations in a “vector database”. And that’s precisely what Pinecone is: an online vector database.
Costwise, a basic usage of Pincone is free. You can register, but don’t need to leave any payment info for starters. There are a lot of articles out there how to do this. You can refer to the sources below, but I spare you the details here.
openAI, on the other hand, immediately wants you to leave payment info. But that’s OK (as long as you have a credit card to your name), as costs are truely low if you consider the computational effort and power behind the model (….but it is good to know that there are alternatives!!!). Same here: lots of tutorials / descriptions out there how to sign up and obtain your openAI-API-key. You can search for it or refer to the resoureces section.
Besides the technical setup requirements, it comes in useful, for the given use case, if you have a pure text version of your current CV. ChatGPT (hopefully) wasn’t trainded on your CV – and only “knows” what it was trained on. So for chatGPT (and thus the BabyAGI agent) to be able to know anything about your CV (and thus your departure point for professional reorientation), you must feed it your CV as part of the prompt.
There are alternatives both for openAI as LLM and for Pinecone as vector database. And there are MANY different deployment options how to install Flowise in an online environment. I opted for
Flowise in the first place
OpenAI as LLM
Pincone as vector database
BabyAGI agent:
I also tried the AutoGPT-agent template on the same use case. In many respects, this agent is more flexible and powerful (e.g. it allows the upload from files to feed the agent, not only prompts; it can do web searches in the background to retrieve up-to-date information; it supports a local vectore store… and certainly does many things more). However, the output format is a JSON-file that requires further post-processing. Something that negated the “no-code”-approach of this article.
The output from BabyAGI is explained further down below. It may not appear where one suspects it (details below….). But it is simple, plain text that can immediately be used an read by humans.
Local install:
Reading the installation instructions in the Flowise documentation for a local install, I first though they were joking, but it is that easy:
At this point, you already see the interface. But there’s not yet a lot you can do with it. In order to get the PoC for our use case on the road, we still need, as said above, an API key each for openAI and Pinecone.
As said above: there are millions of good sources to guide you (see e.g. the Resoureces below). You only need to have your API-key available for copy and pasting
For signing up and obtaining an API-key, it’s the same as for openAI. However, it gets a bit more complicated: me must later tell Flowise with what “Index” of your Pinecone account to interact with. Think of the index as of a table in a normal database.
So you must first create this index (aka table) so that Flowise knows exactly where to store the above-mentioned “embedding translation” of the texts that you (via the prompt) and the agent (via its “thinking process”) will feed into the database.
Once signed up on their website, you click on the INDEX menu in the left pane menu, then on the “Create Index” button in the upper right corner:
In this example, you already see the created index. When you create your’s, this window will pop up:
It is important to
Once you started Flowise in the browser by calling http://localhost:3000 after having run ”npx flowise start” in the windows shell, you should see something like this, but just without any chatflows:
As you can see from the screenshot, I already experimented a bit. The flow discussed here is “BabyAGI_Reorientation”. It is easy to get these basic flows installed and modify them: they are available thru the Marketplace (left pane). You only needs to select the flow you want to try and save it (disk-icon in the upper left corner) as soon as the template flow is showing on screen. It is at this point that you give the flow its name.
Opening this flow should give you a picture like this:
And now you understand what you needed all the API-keys for…. you must copy&paste them to the respective fields in the flow component boxes, twice for the openAI and once for Pinecone. And for Pinecone, you also need to set the environment and the Pincecone Index Name (both easy to retrieve from the Pinecone website once you log in after your sign up – just in case you forgot to note them or store them in your password vault).
The model copied from the template can be used directly to attack our use case. As so often with AI-models, the “secret sauce” lies in the prompt.
In order to start to prompt the model, you need to click on the chat-icon in the upper right corner of the screenshot above.
I used the following prompt as intro AND copied and pasted the above-mentioned pure-text CV right after the prompt into the chat:
“As manager in a leading position, I want to reorient myself professionally. My core competences are in Finance, but I have very good skills both on the level of IT, data science, ML and AI and on the level of international mangement and coordination. The target of the reorientation is a leading position in a data-driven and growth oriented company. It can still be in the Finance domain, but is not limited to it. You should also consider other potential profiles for the new position. Devise a task list of how to best reach this target and devise a list of potential target positions that have a good fit with my CV. This CV follows now: PURE TEXT CV PASTED HERE”
It goes without saying: this prompt needs to be adjusted to personal circumstances to define the target for the agent.
Further important settings that influence the output of the agent are
The biggest surprise was the output format: I was at first VERY disappointed, because not only took it ages before a result showed in the chat dialogue – the resulting answer to the prompt was also underwhelming in every aspect. That is until I found out that the actual answering process (which is far more important than the result itself) is NOT shown in the chat dialogue box, but ONLY in the shell / terminal.
In other words: you need to leave the browser-based GUI, go back to the shell and copy & paste the text from there to see the all-important “thinking process” of BabyAGI that makes it come to the result.
I tried another, more visual example prompt to proof the point:
The prompt:
“Assuming I have all the necessary indgedients, tell me how to prepare a classical Club Sandwich.”
The result:
“To prepare a classic Club Sandwich, you need to check for available turkey or chicken slices. Please make sure you have these ingredients before proceeding with the recipe.”
Underwhelming indeed.
However, in the terminal / shell, the following “thinking process” has taken place to produce this result:
TASK LIST
1: Make a todo list
NEXT TASK
1: Make a todo list
TASK RESULT
Sure, here is a todo list for preparing a classical Club Sandwich:
TASK LIST
2: Check if all necessary ingredients are available:
3: Create a grocery list:
4: Preheat oven or toaster oven:
5: Prepare the bacon:
6: Prepare the bread:
7: Slice tomato and lettuce:
8: Assemble the sandwich:
9: Cut the sandwich:
10: Plate the sandwich:
1: Clean up:
NEXT TASK
Now that looks like much more helpful information to solve the task formulated in the prompt !
Because this is such an important issue I found in using Flowise, here two more screenshots:
screenshot 1 showing the chat output:
screenshot 2 showing the text outpout generated in the shell:
I have frankly no idea if this (still) is a bug or intentional to not show the “thinking process” in the chat dialogue… but as long as one can access the info, I’m fine with this at this early stage. What counts: the same logic holds true for the more abstract use case of professional reorientation with the prompt explained above.
Not all is perfect yet with the agent – its “thinking process” created a lot of noise or overhead. But even if the noise-to-info ratio in the agent output is in the area of 7:3 or 8:2 – the remaining info provides convincing quality and valuable ideas and insights how to tackle the task at hand.
Immediately the first iteration produced a very useful list for the use case at hand that I would consider “bull’s eye”:
TASK RESULT
Potential target positions:
In the further iterations, BabyAGI tried to tackle the 7 TASK RESULTS from above one-by-one. It would eventually get stuck on point 3. (relevant skills and experiences) by “solving” this task several times instead of progressing to the next item on the list.
This could be solved by re-prompting the agent with the remaining list after point 3.
The result from the iteration on point 1) above (Identifying career goals….) contained e.g. the info:
NEXT TASK
1: Research and analyze potential companies and job openings that align with the desired position and career goals.
TASK RESULT
Pretty useful stuff, I would say.
A last, rather detailed example from the end of the “thinking process” and a bit of re-prompting:
NEXT TASK
1: Develop a personal website or portfolio to showcase skills, past work, education, and experience for potential employers.
TASK RESULT
Thank you for your request. Based on the objectives and previously completed tasks, here are some conclusive lists to address the remaining tasks:
In addition to these lists, I suggest developing a personal website or portfolio to showcase your skills, past work, education, and experience for potential employers. You can use website builders like WordPress, Wix, or Squarespace to create a professional-looking website that highlights your unique selling points and value proposition. Be sure to include your personal branding message and contact information on the website so that potential employers can easily get in touch with you.
I hope this helps you achieve your career development goals. Please let me know if you have any further questions or concerns.
NEXT TASK
Now that is very detailed and includes several points that I frankly wouldn’t have thought about. Thank you, agent !
And, finally, as shown in the “Club Sandwich”-case, the actual response shown in the chat box answers the prompt question somewhat, but is comparably underwhelming:
TASK RESULT
Based on your core competencies, some potential target positions in data-driven, growth-oriented companies include:
Does this agent approach completely eliminate the need for a human counterpart for this kind of coaching ? Certainly not !
Does is prepare & support one to tackle complex tasks like career reorientation? Certainly yes !
The best way to look at it is probably to regard an agent like BabyAGI as a sort of wingman to support and give backup for complex task and endeavors.
The approach is probably not yet “ready-to-use” for all-out luddites and those technologically faint at heart. Getting all the technical setups and requirements straight is still a challenge. Yet, there is not a single line of code in this article – and the result speaks for itself.
So I am sure that the barrier to entry for using such agents as wingman is much lower now with a tool like Flowise than with, e.g. LangChain code alone. And anyone reading these lines is very likely neither a luddite nor technologically faint at heart 😉
And one tongue-in-cheek-comment: if the result from the output motivated this article, than it’s a wonderful example of self-referentiality, as it means that at least one box of the task list derived from this article is already checked with the act of publishing it.
In the process of trying out Flowise and writing this article in parallel, I saw several points that can provide “quick wins” for the usability of Flowise in general and BabyAGI in particular:
This was my first encounter with Flowise. For next iterations , I noted the following points to check for progress:
https://help.socialintents.com/article/188-how-to-find-your-openai-api-key-for-chatgpt
https://cobusgreyling.medium.com/flowise-for-langchain-b7c4023ffa71
https://cobusgreyling.medium.com/flowise-is-a-graphical-user-interface-gui-for-langchain-8978ac3db634