Metadata-Version: 2.4
Name: guillotina_nuclia
Version: 1.0.4
Summary: nuclia support for guillotina
Home-page: https://github.com/guillotinaweb/guillotina_nuclia
Author: Nil Bacardit Vinyals
Author-email: n.bacardit@iskra.cat
License: GPL version 3
Keywords: AI async guillotina nuclia
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Software Development :: Libraries :: Python Modules
License-File: LICENSE
Requires-Dist: guillotina>=7.0.0
Requires-Dist: nuclia>=4.9.11
Provides-Extra: test
Requires-Dist: async_asgi_testclient; extra == "test"
Requires-Dist: pytest>=5.0; extra == "test"
Requires-Dist: pytest-asyncio==0.18.3; extra == "test"
Requires-Dist: coverage; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: pytest-docker-fixtures[pg]>=1.3.0; extra == "test"
Requires-Dist: docker; extra == "test"
Requires-Dist: aiohttp<4.0.0,>=3.0.0; extra == "test"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: summary

guillotina_nuclia – Quick Setup
================================

This package lets your Guillotina instance talk to **Nuclia**.
Below is the only thing you have to do: drop the utility in ``app_settings``
and export your credentials.

Install
-------

.. code-block:: bash

    pip install guillotina_nuclia

Configure the Nuclia utility
----------------------------

These are the settings regarding nuclia already configured in the package.
You mostly need to set up the next env variables: NUA_KEY, APIKEY, KBID, GENERATIVE_MODEL

.. code-block:: python

    import os

    app_settings = {
        "load_utilities": {
            "nuclia": {
                # interface that the utility will provide
                "provides": "guillotina_nuclia.utility.INucliaUtility",
                # dotted path to the factory
                "factory": "guillotina_nuclia.utility.NucliaUtility",
                # parameters forwarded to the factory
                "settings": {
                    # which LLM model Nuclia will use for generative answers
                    "generative_model": os.environ.get("GENERATIVE_MODEL", "chatgpt4o"),
                    # your personal Nuclia key (required)
                    "nua_key": os.environ.get("NUA_KEY"),
                    # hard limit for tokens (optional)
                    "max_tokens": os.environ.get("MAX_TOKENS"),
		    # Nuclia's API KEY
		    "apikey": os.environ.get("APIKEY"),
		    # Knowledge Box ID
		    "kbid": os.environ.get("KBID", ""),
		    
                },
            }
        }
    }

Set the environment variables
-----------------------------

.. list-table:: Environment variables
   :header-rows: 1

   * - Variable
     - Required
     - Example value
     - Description
   * - ``NUA_KEY``
     - **Yes**
     - ``nua_pk_live_…``
     - API token generated in the Nuclia dashboard.
   * - ``GENERATIVE_MODEL``
     - No
     - ``chatgpt4o`` (default)
     - LLM used for ``ask`` / ``predict``.
   * - ``MAX_TOKENS``
     - No
     - ``2048``
     - Maximum tokens per answer.

Export them before launching Guillotina:

.. code-block:: bash

    export NUA_KEY=\"nua_pk_live_your_token_here\"
    export KBID=\"Knwoledge box id\"
    export API_KEY=\"Nuclia's api key\"
    export GENERATIVE_MODEL=\"chatgpt4o\"   # optional
    export MAX_TOKENS=2048                 # optional

Done!
-----

Start Guillotina as usual—``INucliaUtility`` is now available
everywhere and the built-in routes POST (``@NucliaAsk``,
``@NucliaFind``, ``@NucliaPredict``, ``@NucliaSearch``,
``@NucliaAskStream``, etc.) will automatically work.

❤️  Happy coding!

1.0.4 (2025-09-23)
------------------

- Changing API Endpoint to progress, and adding API_ENDPOINT env
  variable to be able to customize it


1.0.3 (2025-07-29)
------------------

- Adding retrieval response in @NucliaAskStream
  [nilbacardit26]
- Convert all the endpoints from GET to POST. Now the question goes to
  the body
  [nilbacardit26]


1.0.2 (2025-07-28)
------------------

- Fixing TypeError: can only concatenate str when kbid is not passed
  [nilbacardit26]


1.0.1 (2025-07-28)
------------------

- Fixing KBID auth
  [nilbacardit26]
- Adding @NucliaAskStream endpoint
  [nilbacardit26]


1.0.0 (2025-07-23)
------------------

- Initial release
  [nilbacardit26]
