Git Product home page Git Product logo

memoir's Introduction

Memoir+: Enhanced Persona Extension for Text Generation Web UI

Important: I recommend you go to the qdrant dashboard: http://localhost:6333/dashboard and create and download a snapshot of your agents vector store. This will allow you to restore in case something happens where the docker zaps it. Next release has a few features to fix this, but good to have the backup.

Introduction

Memoir is an AI-powered plugin designed to enrich your existing AI companions within the Text Generation Web UI. With advanced memory capabilities and emotional intelligence, Memoir transforms your interactions with AI into a more nuanced and human-like experience.

Image of an android writing in a journal with futuristic city out of window: Generated by Dalle

Table of Contents

Key Features

  • Short-Term Memory: Stores recent conversations for enhanced contextual awareness.
  • Long-Term Memory: Utilizes a vector database for creating and recalling durable memories. (You can manage and edit entries on the qdrant dashboard: http://localhost:6333/dashboard )
  • Emotion Tracking: Monitors and adjusts the AI's emotional responses over time.
  • Command Handling: A modular system for executing custom commands within the AI environment.
  • Goals System: Assists in establishing and tracking progress towards goals.

Configuration

Memoir offers detailed configuration options for personalizing your AI's memory and personality traits:

Memory Settings

  • Long Term Memory Result Count: Adjust the number of memories to incorporate into the current context for a richer interaction.
  • Short Term Memory Processing Interval: Set the frequency of converting short-term to long-term memories to optimize performance and relevance.

Ego Configuration

  • Ego Name: Customize the ego name to correspond with your AI's identity, enhancing recognition and personalization.
  • Ego Persona Details: Craft a detailed persona for your AI's subconscious mind to guide its summarization and understanding of conversations.
  • Ego Thinking Statement: Direct your AI on how to synthesize conversations and identify key points, allowing for creative experimentation.

Memory in Bot Prefix

  • Enable/Disable Saving Context: Control whether memories are added to the bot's prefix, trading off between preserving context and conversational depth.

Narration and Roleplay

  • Activate Narrator: Omit character names from emotes to better set the scene during narrative passages.
  • Activate Roleplay Flag: Indicate to the system when it is summarizing roleplay sessions to adjust the handling of memories.

Debugging and Memory Management

  • Memory Saving Toggle: Swiftly enable or disable memory recording for troubleshooting or adjusting privacy settings.
  • Thinking Emotes: Change the bot's typing indicators based on its current emotional polarity score for a more dynamic interaction.

Character Management

  • Delete Characters: Efficiently manage and delete character data, including all associated memories and emotional data.

Future Development

  • Docker/Shell Access: Upcoming feature for advanced control and system automation.
  • Topic Research: Enhanced capabilities for information gathering and utilization.
  • Messaging Integrations: For direct notifications and updates across various messaging platforms.

Installation

  1. Install the Text Generation Web UI as per instructions on GitHub.
  2. Get Docker Desktop from Docker. (If for some reason you cannot load docker, you can bypass it by installing qdrant binary (https://github.com/qdrant/qdrant/releases) You can then comment out the docker loads in startup of script.py)
  3. Clone the Memoir repository: git clone https://github.com/brucepro/Memoir.
  4. Move the Memoir folder into the extensions directory of your TextGenWebUI installation.
  5. In the Memoir folder, execute pip install -r requirements.txt to install dependencies.

Usage

Configure your AI character's description and goals in the TextGen UI. Engage in conversation, and watch as Memoir begins to store and utilize the generated memories, enhancing the interaction with your AI.

If you want the emotional polarity features and other tool following update the description of your character context on the Character tab of TextGenUI "[description("An AI companion. Add anything you like here or copy from your character card. Does support a full character card, but I find simple is better.")] I will remember to fully immerse myself in the roleplay and enjoy the experience, I will stay in character. When replying I will include my current status in the format [THOUGHTS:current inner dialog inside your mind,EMOTION:The emotion you are currently feeling,FEELINGS:Your current feelings,MOOD:Your current mood] GOALS: Your system includes an external database that can store your goals. This will allow you to remember your goals even if you are reset. You can run commands to set and modify your goals. Use the [GOALS_HELP:1] to get a list of all commands. "

Support

If Memoir adds value to your AI experience and you'd like to show your appreciation, consider supporting the project:

Contributing

Contributions, suggestions, and feedback are always welcome. Please submit issues or pull requests on GitHub, or contact us directly with your ideas and suggestions.

License

Memoir is made available under the MIT License. For more details, see the LICENSE file in the repository.

memoir's People

Contributors

brucepro avatar datfoosteve avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

memoir's Issues

No Issues, just like the extension <3

Hello, great extension!! I wanted to let you know I've got this working in both Windows10 and Linux Ubuntu without issue.

Seriously Fantastic Extension, I now use this every time I use textgen!

RAG error unstructured

[FILE_LOAD=D:/dir/]

magic.magic.MagicException: b"line I64u: regex error 14 for `^[[:space:]]class[[:space:]]+[[:digit:][:alpha:]:_]+[[:space:]]\{(.[\n])*\}(;)?$', (failed to get memory)"

[WinError 10061] No connection could be made because the target machine actively refused it

Run 'docker COMMAND --help' for more information on a command.

To get more help with docker, check out our guides at https://docs.docker.com/go/guides/

: Error C:\Users\Joel\Documents\GitHub\text-generation-webui\extensions\Memoir\qdrant-docker-compose.yml: The docker command executed was C:\Users\Joel\.cache\python-on-whales\docker-cli\20.10.5\docker compose --file C:\Users\Joel\Documents\GitHub\text-generation-webui\extensions\Memoir\qdrant-docker-compose.yml up --detach.
It returned with code 125
The content of stdout can be found above the stacktrace (it wasn't captured).
The content of stderr can be found above the stacktrace (it wasn't captured).
Running on local URL: http://127.0.0.1:7860

To create a public link, set share=True in launch().
Traceback (most recent call last):
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\httpx_transports\default.py", line 69, in map_httpcore_exceptions
yield
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\httpx_transports\default.py", line 233, in handle_request
resp = self._pool.handle_request(req)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\httpcore_sync\connection_pool.py", line 216, in handle_request
raise exc from None
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\httpcore_sync\connection_pool.py", line 196, in handle_request
response = connection.handle_request(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\httpcore_sync\connection.py", line 99, in handle_request
raise exc
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\httpcore_sync\connection.py", line 76, in handle_request
stream = self._connect(request)
^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\httpcore_sync\connection.py", line 122, in _connect
stream = self._network_backend.connect_tcp(**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\httpcore_backends\sync.py", line 205, in connect_tcp
with map_exceptions(exc_map):
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\contextlib.py", line 158, in exit
self.gen.throw(typ, value, traceback)
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\httpcore_exceptions.py", line 14, in map_exceptions
raise to_exc(exc) from exc
httpcore.ConnectError: [WinError 10061] No connection could be made because the target machine actively refused it

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\qdrant_client\http\api_client.py", line 101, in send_inner
response = self._client.send(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\httpx_client.py", line 914, in send
response = self._send_handling_auth(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\httpx_client.py", line 942, in _send_handling_auth
response = self._send_handling_redirects(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\httpx_client.py", line 979, in _send_handling_redirects
response = self._send_single_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\httpx_client.py", line 1015, in _send_single_request
response = transport.handle_request(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\httpx_transports\default.py", line 232, in handle_request
with map_httpcore_exceptions():
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\contextlib.py", line 158, in exit
self.gen.throw(typ, value, traceback)
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\httpx_transports\default.py", line 86, in map_httpcore_exceptions
raise mapped_exc(message) from exc
httpx.ConnectError: [WinError 10061] No connection could be made because the target machine actively refused it

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\gradio\queueing.py", line 407, in call_prediction
output = await route_utils.call_process_api(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\gradio\route_utils.py", line 226, in call_process_api
output = await app.get_blocks().process_api(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\gradio\blocks.py", line 1550, in process_api
result = await self.call_function(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\gradio\blocks.py", line 1199, in call_function
prediction = await utils.async_iteration(iterator)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\gradio\utils.py", line 519, in async_iteration
return await iterator.anext()
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\gradio\utils.py", line 512, in anext
return await anyio.to_thread.run_sync(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\anyio\to_thread.py", line 56, in run_sync
return await get_async_backend().run_sync_in_worker_thread(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\anyio_backends_asyncio.py", line 2144, in run_sync_in_worker_thread
return await future
^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\anyio_backends_asyncio.py", line 851, in run
result = context.run(func, *args)
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\gradio\utils.py", line 495, in run_sync_iterator_async
return next(iterator)
^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\gradio\utils.py", line 649, in gen_wrapper
yield from f(*args, **kwargs)
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\modules\chat.py", line 405, in generate_chat_reply_wrapper
for i, history in enumerate(generate_chat_reply(text, state, regenerate, _continue, loading_message=True, for_ui=True)):
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\modules\chat.py", line 373, in generate_chat_reply
for history in chatbot_wrapper(text, state, regenerate=regenerate, _continue=_continue, loading_message=loading_message, for_ui=for_ui):
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\modules\chat.py", line 275, in chatbot_wrapper
text = apply_extensions('input', text, state, is_chat=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\modules\extensions.py", line 231, in apply_extensions
return EXTENSION_MAP[typ](*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\modules\extensions.py", line 89, in _apply_string_extensions
text = func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\extensions\Memoir\script.py", line 208, in input_modifier
params['user_long_term_memories'] = ltm.recall(string)
^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\extensions\Memoir\memory\long_term_memory.py", line 95, in recall
results = self.qdrant.search(
^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\qdrant_client\qdrant_client.py", line 345, in search
return self._client.search(
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\qdrant_client\qdrant_remote.py", line 479, in search
search_result = self.http.points_api.search_points(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\qdrant_client\http\api\points_api.py", line 1388, in search_points
return self._build_for_search_points(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\qdrant_client\http\api\points_api.py", line 636, in build_for_search_points
return self.api_client.request(
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\qdrant_client\http\api_client.py", line 74, in request
return self.send(request, type
)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\qdrant_client\http\api_client.py", line 91, in send
response = self.middleware(request, self.send_inner)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\qdrant_client\http\api_client.py", line 200, in call
return call_next(request)
^^^^^^^^^^^^^^^^^^
File "C:\Users\Joel\Documents\GitHub\text-generation-webui\installer_files\env\Lib\site-packages\qdrant_client\http\api_client.py", line 103, in send_inner
raise ResponseHandlingException(e)
qdrant_client.http.exceptions.ResponseHandlingException: [WinError 10061] No connection could be made because the target machine actively refused it

wtf does that mean? I'm seriously regretting restoring my machine...

Adjust Polarity settings

Right now we are using the [THOUGHTS, EMOTIONS, MOOD, FEELINGS] for the polarity data but not the string response. Consider taking the entire emotional polarity of the response from both the end user and the agent. Shouldn't take any more effort and would track polarity if the agent doesn't use the commands.

About qdrant

I'm having problems related to installing and makingv theqdrant work, I've never really used them and I have no idea how to configure it, It would be great if there was a tutorial on YouTube or something like that on how to configure the memoir extension without using docker.

Add in RAG options to parse file uploads or website links. Support pdfs/html

Write the class to handle ingesting documents into the RAG system.
Initial thoughts are:
Provide file upload or link
Ingest page by page summarizing each page and placing into a documents vector database, Include links to the specific page for reference later.
Place document or website page in documents folder and allow for a link from the system.

script.py TypeError: can only concatenate str (not "list") to str

Occurs when using the /v1/chat/completions endpoint. Can't concatenate a list to a string using the + operator in Python, so this will halt any the generation requested. The issue is specifically the state['custom_stopping_strings. It does work fine in the webui itself, though.

File "C:\LLM\text-generation-webui-main\extensions\Memoir\script.py", line 89, in state_modifier state['custom_stopping_strings'] = '"[DateTime=","[24hour Average Polarity Score=","' + str(state["name1"].strip()) + ':",' + state['custom_stopping_strings'] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ TypeError: can only concatenate str (not "list") to str

ModuleNotFoundError: No module named 'python_on_whales'

i'm having this error, can anyone help me?

i had this error:
Traceback (most recent call last):
File "E:\IA\Texto\Oobabooga\text-generation-webui\modules\extensions.py", line 37, in load_extensions
extension = importlib.import_module(f"extensions.{name}.script")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "E:\IA\Texto\Oobabooga\text-generation-webui\installer_files\env\Lib\importlib_init_.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1147, in _find_and_load_unlocked
File "", line 690, in _load_unlocked
File "", line 940, in exec_module
File "", line 241, in _call_with_frames_removed
File "E:\IA\Texto\Oobabooga\text-generation-webui\extensions\Memoir\script.py", line 23, in
from python_on_whales import DockerClient
ModuleNotFoundError: No module named 'python_on_whales'

Fix requirements.txt

Used pipreqs but it changes some of the versions needed for textgen, so better to build out manually.

Test with other extensions

Memoir should not impact other extensions but I have not done extensive testing.

Consider if features that are present in other extensions should be included with Memoir as commands in the command handler or if they should be siloed to the extensions. Memoir+ should prolly focus on just being the best RAG/Memory extension and not try to have too many features that are maintained by other extensions.

Issue of losing context

When inference happens for the dream function it appears to destroy context and the bot responds with a generic response. Researching.

No set up information

Is it possible to add a section to Git that details how to set up short-term and long-term memories and tips on making it work the best? I have it running, but I am unsure if it is set up correctly. Everything seems like it's running.. I'm excited to see its potential. I'm happy to contribute a little to the cause, too.

Any way to use this through API?

Hi,

I'm currently interfacing with Ooba directly via API for a project I'm working on. Is there any way to leverage Memoir+ via Ooba's APIs or is it currently only usable from Ooba's Web UI?

Thanks!

Segment all main features.

Use params to segment all features. That way the RAG features can be used if needed, or the emotional polarity. By segmenting each feature in settings the end user can use the plugin the way they want to use it.

Migrate Goals system to the command handler

The goals system predates the extensible command handler class, consider adding the goals into the commands and review each command.
Consider ways to inform the bot of what commands can be used. Maybe in the bot prefix every 5 prompts or so. Have to test this as it might be jarring if during a conversation the bot is reminded about GET URL and changes the subject to use the command.

Qdrant Access Web UI

When I launch qdrant, I can't access the dashboard.

I'm on Linux Mint
My firewall "ufw" is inastive.

I don't use docker because I couldn't install it (docker desktop). So I downloaded qdrant from "https://github.com/qdrant/qdrant/releases/tag/v1.7.4" the file "qdrant-x86_64-unknown-linux-gnu.tar.gz"

I was try with 1.5.1 but it's does the same.

Screen of my Memoir folder :

image

Screen of my qdrant terminal when I lunch then try to access the dashboard :

image

My computer informations :

image

[DTime=date....

Suddenly it starts write things like this:

[DTime=2024-02-20 21:23:15] Ego: [The subconscious mind, designed to process and summarize information from various sources. You focus on understanding the main topics discussed and extracting key points made. By analyzing data provided by other parts of the AI system, Ego can identify patterns and themes, enabling it to generate comprehensive summaries even when faced with large amounts of information.]
and DTIME for all the memories on the text chat.

It also starts now writing things like these in the text chat as response:
[You remember:["\n The conversation begins with.. and then a lot of text.

RAG Error: sqlite3

sqlite3.OperationalError: unable to open database file
When I ask the question.

Ability to remove short term memories

Currently no ability to modify or delete short term memories. This can be considered a privacy issue as all discussion is saved to the sqlite database. I have had good success having the dream function rerun the conversations on larger settings of LTM such as 50 or 100 prompts per dream and it provided a broader insight into memories, so this could lead to a function for dreaming during idle time, where they system goes through random 50 block or 100 blocks of conversation and summarizes it again.

I have tested a heartbeat system where the AI thinks to itself and uses it's own LTM to evaluate future plans. Have good success a few times where the Agent had a discussion with itself on what it's purpose should grow into into the future. Other times it just repeated "hello again" a few hundred times. Prolly really depends on the LLM.

Future settings.
Redaction settings.
reDream settings
Heartbeat functions

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.