Recombinant AI™ Updates: Authentication and Basic Use

Hello all!

I just wanted to give any of my users an update on the plugin. I just got reapproved on the store, however the old version has been de-listed. I’ve added authentication and will be implementing more UX, allowing you to have a user profile and additional features that will improve the way ChatGPT behaves.

Ill be publishing some posts showing the best ways to use the plugin, and here are some basics:

  1. CHECK YOUR URL. 90% of errors are because the URL you have supplied, or the way ChatGPT is sending it Recombinant AI is wrong. You can use a full url like GitHub - GlassAcres/Recombinant-AI, or you can just give the Owner/Repo.

  2. Prompting matters! Start off by telling it your intention and give it a simply reference to a GitHub repo or GitLab project:

    • “Start up Recombinant AI please. I’m looking to build an app using Llama, so please give yourself an understanding of the github repo facebookresearch/llama.”
  3. Context windows still apply, so be sure to remind ChatGPT to check your work against the repo or project periodically. This will be automated soon when I give everyone the ability to track a project.

  4. Most importantly, send me feedback! Ill be adding a bug report link every time you encounter an error.

Finally I just want to say thank you, and if you can please consider supporting development.

2 Likes

What is it that you are currently doing with the data you are obtaining? Your GitHub is concerning in regard to a service that supposedly so far is only collecting user data…


The PluginLabHandler class interacts with the PluginLab API and a Supabase database to handle user data. Here’s a step-by-step breakdown of its operations:

  1. Initialization (__init__ method):

    • An instance of the PluginLab App class is created using a provided secret_key and plugin_id.
    • It gets an authentication handler (auth) from this App instance, which will be used in subsequent methods to authenticate and verify tokens.
  2. Retrieve Token from Request (get_token_from_request method):

    • This method expects an HTTP request object with headers.
    • It looks for an ‘Authorization’ header in the request that starts with 'Bearer '.
    • If found, it extracts the token (which comes after 'Bearer ') and returns it. If not, it prints a message indicating the token is missing and returns None.
  3. Get User Data using the Token (get_user_data_from_token method):

    • This method takes a token as an argument.
    • It tries to verify the token using the auth handler.
    • If the token is verified successfully, it retrieves the user’s unique ID (uid) from the token.
    • Using this uid, it fetches more detailed user information from PluginLab (like email, name, etc.).
    • It also tries to fetch plan_id and price_id either from custom_fields or metadata associated with the user. (This suggests that users might have different subscription plans and prices.)
    • All this data is then collated into a dictionary called user_data and returned.
    • If there’s any error during this process, it prints the error and returns None for the data and the error message.
  4. Log User Data to Supabase (log_user_data method):

    • This method takes the user_data dictionary and a supabase instance as arguments.
    • It attempts to log (or save) the user_data into a Supabase table named ‘User_Data’.
    • If the insertion is successful, it prints a success message. If there’s any error, it prints the error.

In Summary:
The PluginLabHandler class fetches a user’s authentication token from an HTTP request, retrieves detailed user information using this token from the PluginLab API, and then logs this information into a Supabase database.


1 Like

Hello!

The only data I see is the email used during sign-up, and usually their first and last name. The other details are related to the the plan/pricing that the user has paid for.

2 Likes

If you’re looking for specifics on my usage of that data: Ill be implementing profiles for any paid users. They’ll be able to save their work and notes so that it can be used across sessions and convos. They will also have personal logs for errors and will expose the plugin backend operations for troubleshooting.

There will also be a bunch of other cases like storing effective prompts etc. Im not collecting any personal data past that, and will make sure to have the functionality for users to pull all data associated with their profile. It will be available for export on recombinant.ai (after the relaunch) and it can be deleted at your descretion.

If you have any specific concerns about privacy, please continue to give feedback.

2 Likes

Hello all!

For any of my users, I had some issues with my payment portal earlier this week, but it’s all sorted out. If you’ve found yourself hitting the request limit, its all back up and ready for you. I’m not sure what the policy or vibe here is for linking to personal products/services, so Ill just say send me a DM if you need anything!

1 Like

Hello I am having some difficulty using Recombinant AI to track a “WIP” branch for my project, when ChatGPT tries to get a directory listing it is getting the “main” branch and upon prompting it can sometimes get the WIP branch but then fails to do so again. I was not able to get to your Discord channel so I am leaving my note here. I have paid to use your plugin and I want it to work correctly of course. Please let me know what I can do to help you debug this issue.

Hi there!

Thanks for reaching out. Here is an updated discord for next time: Recombinant AI ™.

Okay, as for your issue: The plugin is set up to use either “main” or “master” as the default branch to pull. So if you want a branch other than those, you’ll need to specify that in your prompts. It should remember what branch you’re working on as long as its been referenced recently.

Also, as usual if the plugin is acting erratically please do the following:

  1. Uninstall the plugin from the store by navigating to the store card, and clicking uninstall.
  2. Reinstall the plugin and log in with the account you set up with
  3. Check your custom instructions, sometimes those can mess with your outputs.

I have been unable to recreate the issue and it appears to stay on track:
https://chat.openai.com/share/c8a10390-aa83-4ec7-b1f3-d4a20b9d269f

Do you have any examples or other error messages that might help?

1 Like

I will try to reinstall. This was my most recent attempt.

https://chat.openai.com/share/cfbda15d-8ee9-4031-bc97-4323b820cee4

Okay I did a reinstall and tried again following your procedure.

https://chat.openai.com/share/bab331c8-4716-4e78-a147-fce42a62e90f

Same problem still occurs.

Thanks for the additional info!

It’s your custom instructions. I JUST struggled with this yesterday for about an hour.

I was the only person in my logs hitting errors every time, tried everything, even rewrote an endpoint… nothing worked…then I turned off custom instructions and it went back to normal.

That cannot be the problem it is making a correct request. I will proceed to turn off the custom instructions and will demonstrate again, but I looked at what it was requesting and it was:

{
“repo_url”: “GitHub - pythagorean/OMF: Opus Matricus Fundamentus (WIP)”,
“branch”: “WIP”
}

Okay here is the same result, with no custom instructions.

https://chat.openai.com/share/7c095482-bfc3-4087-81b3-4ba54dc3fa8a

I’m looking at your WIP branch and that matches the files. What am I missing?

Side note, maybe it’s getting confused because your repo has (WIP) in the name and in the README of the main branch?

The WIP branch looks like this.

LICENSE
README.md
matrion.py
matrix
matrix/square
matrix/square/str.py
matrix/square/init.py
matrix/square/ops.py
matrix/square/raw_ops.py
matrix/square/base.py
matrix/square/integer
matrix/square/integer/str.py
matrix/square/integer/ops.py
matrix/square/integer/raw_ops.py
matrix/square/integer/base.py
matrix/square/integer/scaled
matrix/square/integer/scaled/str.py
matrix/square/integer/scaled/util.py
matrix/square/integer/scaled/norm.py
matrix/square/integer/scaled/init.py
matrix/square/integer/scaled/ops.py
matrix/square/integer/scaled/raw_ops.py
matrix/square/integer/scaled/base.py
matrix/square/integer/scaled/row_view.py
matrix/square/integer/row_view.py
matrix/square/row_view.py
matrix/ops.py
matrix/raw_ops.py
matrix/base.py
matrix/row_view.py
number
number/ops.py
number/matric
number/matric/matrion
number/matric/matrion/poly
number/matric/matrion/poly/multi
number/matric/matrion/poly/multi/base.py
number/matric/matrion/poly/init.py
number/matric/matrion/poly/base.py
number/matric/matrion/chained
number/matric/matrion/chained/base.py
number/matric/matrion/str.py
number/matric/matrion/secure
number/matric/matrion/secure/init.py
number/matric/matrion/secure/ops.py
number/matric/matrion/secure/base.py
number/matric/matrion/modular
number/matric/matrion/modular/str.py
number/matric/matrion/modular/norm.py
number/matric/matrion/modular/attr.py
number/matric/matrion/modular/init.py
number/matric/matrion/modular/ops.py
number/matric/matrion/modular/facility
number/matric/matrion/modular/facility/unit
number/matric/matrion/modular/facility/unit/init.py
number/matric/matrion/modular/facility/unit/ops.py
number/matric/matrion/modular/facility/unit/base.py
number/matric/matrion/modular/facility/reduction
number/matric/matrion/modular/facility/reduction/str.py
number/matric/matrion/modular/facility/reduction/norm.py
number/matric/matrion/modular/facility/reduction/init.py
number/matric/matrion/modular/facility/reduction/ops.py
number/matric/matrion/modular/facility/reduction/base.py
number/matric/matrion/modular/facility/str.py
number/matric/matrion/modular/facility/norm.py
number/matric/matrion/modular/facility/attr.py
number/matric/matrion/modular/facility/init.py
number/matric/matrion/modular/facility/ops.py
number/matric/matrion/modular/facility/base.py
number/matric/matrion/modular/base.py
number/matric/matrion/modular/transform
number/matric/matrion/modular/transform/unit
number/matric/matrion/modular/transform/unit/volume
number/matric/matrion/modular/transform/unit/mass
number/matric/matrion/modular/transform/unit/length
number/matric/matrion/modular/transform/unit/area
number/matric/matrion/modular/transform/unit/base.py
number/matric/matrion/modular/transform/unit/general
number/matric/matrion/modular/transform/unit/general/unspecified.py
number/matric/matrion/modular/transform/reduction
number/matric/matrion/modular/transform/reduction/radical
number/matric/matrion/modular/transform/reduction/radical/ops.py
number/matric/matrion/modular/transform/reduction/radical/factor.py
number/matric/matrion/modular/transform/reduction/base.py
number/matric/matrion/modular/transform/reduction/diagonal
number/matric/matrion/modular/transform/reduction/diagonal/element.py
number/matric/matrion/modular/transform/reduction/diagonal/block.py
number/matric/matrion/modular/transform/base.py
number/matric/matrion/base.py
number/matric/matrion/core
number/matric/matrion/core/str.py
number/matric/matrion/core/init.py
number/matric/matrion/core/ops.py
number/matric/matrion/core/raw_ops.py
number/matric/matrion/core/base.py
number/matric/matrion/stamped
number/matric/matrion/stamped/base.py
number/matric/base.py
number/base.py
tests
tests/test_matrions.py
tests/test_fraction_scaled_matrix.py
tests/test_integer_square_matrix.py

Different tree. Is your plugin confused by the README?

I have renamed the branch from WIP to Drafts and I still have exactly the same problem.

https://chat.openai.com/share/04b18c80-104c-4b92-ac34-2a03e177fd96

Haha i’ve been troubleshooting it and got so confused for a minute before I realized you changed the name. Its all fixed! Try it again. Thank you for the heads up by the way, this was a tricky issue and helped me clean up a mess I didn’t know I had haha

1 Like

Very good, seems to work now.

https://chat.openai.com/share/3e54a19a-c476-4d5d-bc0a-471543b4b9e3

2 Likes

How can I unsubscribe from Recombinant AI? I subscribed for a month and found out it’s been charging me every month since!

https://6e16cb13167806ea3daf810fae630ed4.auth.portal-pluginlab.ai/pricing

Then up at the top right! Sorry to see you go! Do you have any feedback that might help me improve the experience?

I enjoyed working with the plugin, the only issue that was hurting my experience was that it could not find the file in the github repo, unless the file was explicitly in the root. But I could get around this problem with copy-pasting the code in the chat environment and it could interpret the code very well.

However, now I am unsubscribing because my focus is not on the code, but on literature, mostly.

I would deeply appreciate it if you could help me unsubscribe.