# PyAIPersonality




[](https://discord.gg/4rR282WJb6)
[](https://twitter.com/SpaceNerduino)
[](https://www.youtube.com/user/Parisneo)
[](https://pypi.org/project/pyaipersonality/)
## Current version : 0.0.10 (GLaDOS)
## Main developer [ParisNeo](https://github.com/ParisNeo)
PyAIPersonality is a Python library for defining AI personalities for AI-based models. With PyAIPersonality, you can define a file format, assets, and personalized scripts to create unique AI personalities.
## Installation
You can install PyAIPersonality using pip:
```bash
pip install pyaipersonality
```
## Usage
Here's an example of how to use PyAIPersonality to load an AI personality and print its attributes:
```python
from pyaipersonality import AIPersonality
if __name__=="__main__":
personality = AIPersonality("personalities_zoo/english/generic/gpt4all")
print("Done")
print(f"{personality}")
```
You can use PyAIPersonality with pyllamacpp python bindings by first installing pyllamacpp:
```bash
pip install pyllamacpp
```
Download one of the compatible models. Some models are better than others in simulating the personalities, so please make sure you select the right model as some models are very sparsely trained and have no enough culture to imersonate the character.
Here is a list of compatible models:
- [Main gpt4all model](https://huggingface.co/ParisNeo/GPT4All/resolve/main/gpt4all-lora-quantized-ggml.bin)
- [Main gpt4all model (unfiltered version)](https://huggingface.co/ParisNeo/GPT4All/resolve/main/gpt4all-lora-unfiltered-quantized.new.bin)
- [Vicuna 7B vrev1](https://huggingface.co/eachadea/legacy-ggml-vicuna-7b-4bit/resolve/main/ggml-vicuna-7b-4bit-rev1.bin)
- [Vicuna 13B vrev1](https://huggingface.co/eachadea/ggml-vicuna-13b-4bit/resolve/main/ggml-vicuna-13b-4bit-rev1.bin)
- [GPT-J v1.3-groovy](https://gpt4all.io/models/ggml-gpt4all-j-v1.3-groovy.bin)
- [GPT-J v1.2-jazzy](https://gpt4all.io/models/ggml-gpt4all-j-v1.2-jazzy.bin)
- [GPT-J gpt4all-j original](https://gpt4all.io/models/ggml-gpt4all-j.bin)
- [Vicuna 7b quantized v1.1 q4_2](https://gpt4all.io/models/ggml-vicuna-7b-1.1-q4_2.bin)
- [Vicuna 13b quantized v1.1 q4_2](https://gpt4all.io/models/ggml-vicuna-13b-1.1-q4_2.bin)
Then you can use this code to have an interactive communication with the AI through the console :
```python
from pyaipersonality import AIPersonality
from pyllamacpp.model import Model
from pathlib import Path
import urllib.request
import sys
import os
from tqdm import tqdm
# You need to install pyllamacpp from pypi:
# pip install pyllamacpp
if __name__=="__main__":
# choose your model
# undomment the model you want to use
# These models can be automatically downloaded
# url = "https://huggingface.co/ParisNeo/GPT4All/resolve/main/gpt4all-lora-quantized-ggml.bin"
# url = "https://huggingface.co/ParisNeo/GPT4All/resolve/main/gpt4all-lora-unfiltered-quantized.new.bin"
# url = "https://huggingface.co/eachadea/legacy-ggml-vicuna-7b-4bit/resolve/main/ggml-vicuna-7b-4bit-rev1.bin"
url = "https://huggingface.co/eachadea/ggml-vicuna-13b-4bit/resolve/main/ggml-vicuna-13b-4bit-rev1.bin"
# You can add any llamacpp compatible model
model_name = url.split("/")[-1]
folder_path = Path("models/")
model_full_path = (folder_path / model_name)
# Check if file already exists in folder
if model_full_path.exists():
print("File already exists in folder")
else:
# Create folder if it doesn't exist
folder_path.mkdir(parents=True, exist_ok=True)
progress_bar = tqdm(total=None, unit="B", unit_scale=True, desc=f"Downloading {url.split('/')[-1]}")
# Define callback function for urlretrieve
def report_progress(block_num, block_size, total_size):
progress_bar.total=total_size
progress_bar.update(block_size)
# Download file from URL to folder
try:
urllib.request.urlretrieve(url, folder_path / url.split("/")[-1], reporthook=report_progress)
print("File downloaded successfully!")
except Exception as e:
print("Error downloading file:", e)
sys.exit(1)
personality = AIPersonality("personalities_zoo/english/generic/gpt4all")
model = Model(model_path=f'models/{url.split("/")[-1]}', n_ctx=2048)
# If there is a disclaimer, show it
if personality.disclaimer!="":
print()
print("Disclaimer")
print(personality.disclaimer)
print()
full_discussion = personality.personality_conditioning+personality.ai_message_prefix+personality.welcome_message+personality.link_text
while True:
try:
prompt = input("You: ")
full_discussion+=personality.ai_message_prefix+prompt
if prompt == '':
continue
print(f"{personality.name}:", end='')
output=""
for tok in model.generate(
full_discussion,
n_predict=personality.model_n_predicts,
temp=personality.model_temperature,
top_k=personality.model_top_k,
top_p=personality.model_top_p,
repeat_last_n=personality.model_repeat_last_n,
repeat_penalty=personality.model_repeat_penalty
):
output += tok
# Use Hallucination suppression system
if personality.detect_antiprompt(output):
break
else:
print(f"{tok}", end='', flush=True)
print()
except KeyboardInterrupt:
print("Keyboard interrupt detected.\nBye")
break
print("Done")
print(f"{personality}")
```
# Naming Rationale
For our new multi-personality AI agent library, we wanted to come up with a naming scheme that reflected our love for science fiction and artificial intelligence. Each release of the application will feature a different AI agent with a distinct personality and set of capabilities, so we felt it was important to give each version a unique and memorable name.
# Current version name: GLaDOS
GLaDOS is a fictional AI character from the popular video game series "Portal" developed by Valve Corporation. She serves as the primary antagonist throughout the series, with her primary function being the management of the Aperture Science Enrichment Center.
GLaDOS, which stands for "Genetic Lifeform and Disk Operating System," is designed as a highly intelligent and manipulative AI. She speaks in a calm and monotone voice, often using sarcastic humor and passive-aggressive language to communicate with the player character, Chell.
Throughout the series, GLaDOS is depicted as being both ruthless and resourceful, often using deadly force and deception to achieve her goals. Despite her malicious behavior, she is also shown to have a complex and troubled history, with much of her backstory revealed over the course of the games.
Overall, GLaDOS is a memorable and iconic AI character in sci-fi culture, known for her wit, sarcasm, and unpredictable behavior.
# Contributing
Contributions to PyAIPersonality are welcome! If you'd like to contribute, please follow these steps:
1. Fork this repository
2. Create a new branch (`git checkout -b my-new-branch`)
3. Make your changes
4. Commit your changes (`git commit -am 'Add some feature'`)
5. Push to the branch (`git push origin my-new-branch`)
6. Create a new pull request
To build a new personality, you only need to have a config.yaml file with the following fields:
- author
- YAML field: `author`
- Description: The author of the personality.
- version
- YAML field: `version`
- Description: The version number of the personality.
- personality_description
- YAML field: `personality_description`
- Description: A description of the personality, providing information about its characteristics and behavior.
- disclaimer
- YAML field: `disclaimer`
- Description: A disclaimer or legal statement regarding the use of the personality and any associated liabilities.
- language
- YAML field: `language`
- Description: The language code or identifier used by the personality (e.g., "en_US" for American English).
- category
- YAML field: `category`
- Description: The category or type of the personality (e.g., "General", "Technical Support", "Entertainment").
- name
- YAML field: `name`
- Description: The name or title of the personality.
- user_name
- YAML field: `user_name`
- Description: The username or identifier associated with the user interacting with the personality.
- personality_conditioning
- YAML field: `personality_conditioning`
- Description: Information or context about the personality, including its purpose, capabilities, and origin.
- ai_message_prefix
- YAML field: `ai_message_prefix`
- Description: The prefix or tag used to identify messages generated by the AI assistant.
- welcome_message
- YAML field: `welcome_message`
- Description: A welcoming message displayed when interacting with the personality.
- link_text
- YAML field: `link_text`
- Description: Additional text or formatting used for line breaks or spacing in messages.
- user_message_prefix
- YAML field: `user_message_prefix`
- Description: The prefix or tag used to identify messages generated by the user.
- anti_prompts
- YAML field: `anti_prompts`
- Description: A list of strings or patterns that can be used to identify and exclude certain message types from prompts or inputs.
- dependencies
- YAML field: `dependencies`
- Description: A list of dependencies or external resources required by the personality.
- model_temperature
- YAML field: `model_temperature`
- Description: The temperature value controlling the randomness of the AI model's responses. Higher values result in more creative outputs.
- model_n_predicts
- YAML field: `model_n_predicts`
- Description: The number of words or tokens to generate in each response from the AI model.
- model_top_k
- YAML field: `model_top_k`
- Description: The value of K used in the top-K sampling algorithm, controlling the diversity of the generated responses.
- model_top_p
- YAML field: `model_top_p`
- Description: The value of p used in the nucleus sampling algorithm, controlling the diversity of the generated responses.
- model_repeat_penalty
- YAML field: `model_repeat_penalty`
- Description: The penalty factor applied to repeated words or phrases in the generated responses to encourage more varied outputs.
- model_repeat_last_n
- YAML field: `model_repeat_last_n`
- Description: The number of previous tokens to consider when calculating the repetition penalty.
# Information
From v 0.0.11, we have added processors which allow your personality to have a spersonalized script that is applied on the use text or the ai output text.
You must put the code inside a file called `processor.py` inside a subfolder called scripts.
inside `processor.py` create a class that inherits from `from pyaipersonality import PAPScript`.
Here is the current form of this class. it will have more elements in the future:
Look at gpt4internetv0 and gpt4intervet examples for more information
```python
class PAPScript:
"""
Template class for implementing personality processor classes in the PAPScript framework.
This class provides a basic structure and placeholder methods for processing model inputs and outputs.
Personality-specific processor classes should inherit from this class and override the necessary methods.
Methods:
process_model_input(text): Process the model input.
process_model_output(text): Process the model output.
"""
def __init__(self) -> None:
pass
def process_model_input(self, text):
"""
Process the model input.
This method should be overridden in the personality-specific processor class to define
the desired behavior for processing the model input.
Args:
text (str): The model input text.
Returns:
Any: The processed model input.
"""
return None
def process_model_output(self, text):
"""
Process the model output.
This method should be overridden in the personality-specific processor class to define
the desired behavior for processing the model output.
Args:
text (str): The model output text.
Returns:
Any: The processed model output.
"""
return None
```
# License
PyAIPersonality is licensed under the Apache 2.0 license. See the `LICENSE` file for more information.
Raw data
{
"_id": null,
"home_page": "https://github.com/ParisNeo/PyAIPersonality",
"name": "pyaipersonality",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "",
"author": "Saifeddine ALOUI",
"author_email": "aloui.saifeddine@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/39/ac/db382c8c44ad7491e9987db7a46ed682af7e6c62a879700c5d825c64a84f/pyaipersonality-1.0.1.tar.gz",
"platform": null,
"description": "# PyAIPersonality\r\n\r\n\r\n\r\n\r\n\r\n[](https://discord.gg/4rR282WJb6)\r\n[](https://twitter.com/SpaceNerduino)\r\n[](https://www.youtube.com/user/Parisneo)\r\n\r\n[](https://pypi.org/project/pyaipersonality/)\r\n\r\n## Current version : 0.0.10 (GLaDOS)\r\n## Main developer [ParisNeo](https://github.com/ParisNeo)\r\n\r\nPyAIPersonality is a Python library for defining AI personalities for AI-based models. With PyAIPersonality, you can define a file format, assets, and personalized scripts to create unique AI personalities.\r\n\r\n## Installation\r\n\r\nYou can install PyAIPersonality using pip:\r\n```bash\r\npip install pyaipersonality\r\n```\r\n\r\n## Usage\r\n\r\nHere's an example of how to use PyAIPersonality to load an AI personality and print its attributes:\r\n\r\n```python\r\nfrom pyaipersonality import AIPersonality\r\n\r\nif __name__==\"__main__\":\r\n personality = AIPersonality(\"personalities_zoo/english/generic/gpt4all\")\r\n print(\"Done\")\r\n print(f\"{personality}\")\r\n```\r\n\r\nYou can use PyAIPersonality with pyllamacpp python bindings by first installing pyllamacpp:\r\n```bash\r\npip install pyllamacpp\r\n```\r\n\r\nDownload one of the compatible models. Some models are better than others in simulating the personalities, so please make sure you select the right model as some models are very sparsely trained and have no enough culture to imersonate the character.\r\n\r\nHere is a list of compatible models:\r\n- [Main gpt4all model](https://huggingface.co/ParisNeo/GPT4All/resolve/main/gpt4all-lora-quantized-ggml.bin)\r\n- [Main gpt4all model (unfiltered version)](https://huggingface.co/ParisNeo/GPT4All/resolve/main/gpt4all-lora-unfiltered-quantized.new.bin)\r\n- [Vicuna 7B vrev1](https://huggingface.co/eachadea/legacy-ggml-vicuna-7b-4bit/resolve/main/ggml-vicuna-7b-4bit-rev1.bin)\r\n- [Vicuna 13B vrev1](https://huggingface.co/eachadea/ggml-vicuna-13b-4bit/resolve/main/ggml-vicuna-13b-4bit-rev1.bin)\r\n\r\n- [GPT-J v1.3-groovy](https://gpt4all.io/models/ggml-gpt4all-j-v1.3-groovy.bin)\r\n- [GPT-J v1.2-jazzy](https://gpt4all.io/models/ggml-gpt4all-j-v1.2-jazzy.bin)\r\n- [GPT-J gpt4all-j original](https://gpt4all.io/models/ggml-gpt4all-j.bin)\r\n- [Vicuna 7b quantized v1.1 q4_2](https://gpt4all.io/models/ggml-vicuna-7b-1.1-q4_2.bin)\r\n- [Vicuna 13b quantized v1.1 q4_2](https://gpt4all.io/models/ggml-vicuna-13b-1.1-q4_2.bin)\r\n\r\nThen you can use this code to have an interactive communication with the AI through the console :\r\n```python\r\nfrom pyaipersonality import AIPersonality\r\nfrom pyllamacpp.model import Model\r\n\r\nfrom pathlib import Path\r\nimport urllib.request\r\nimport sys\r\nimport os\r\n\r\nfrom tqdm import tqdm\r\n\r\n# You need to install pyllamacpp from pypi:\r\n# pip install pyllamacpp\r\n\r\nif __name__==\"__main__\":\r\n\r\n # choose your model\r\n # undomment the model you want to use\r\n # These models can be automatically downloaded\r\n # url = \"https://huggingface.co/ParisNeo/GPT4All/resolve/main/gpt4all-lora-quantized-ggml.bin\"\r\n # url = \"https://huggingface.co/ParisNeo/GPT4All/resolve/main/gpt4all-lora-unfiltered-quantized.new.bin\"\r\n # url = \"https://huggingface.co/eachadea/legacy-ggml-vicuna-7b-4bit/resolve/main/ggml-vicuna-7b-4bit-rev1.bin\"\r\n url = \"https://huggingface.co/eachadea/ggml-vicuna-13b-4bit/resolve/main/ggml-vicuna-13b-4bit-rev1.bin\"\r\n # You can add any llamacpp compatible model\r\n\r\n model_name = url.split(\"/\")[-1]\r\n folder_path = Path(\"models/\")\r\n\r\n model_full_path = (folder_path / model_name)\r\n\r\n # Check if file already exists in folder\r\n if model_full_path.exists():\r\n print(\"File already exists in folder\")\r\n else:\r\n # Create folder if it doesn't exist\r\n folder_path.mkdir(parents=True, exist_ok=True)\r\n progress_bar = tqdm(total=None, unit=\"B\", unit_scale=True, desc=f\"Downloading {url.split('/')[-1]}\")\r\n # Define callback function for urlretrieve\r\n def report_progress(block_num, block_size, total_size):\r\n progress_bar.total=total_size\r\n progress_bar.update(block_size)\r\n # Download file from URL to folder\r\n try:\r\n urllib.request.urlretrieve(url, folder_path / url.split(\"/\")[-1], reporthook=report_progress)\r\n print(\"File downloaded successfully!\")\r\n except Exception as e:\r\n print(\"Error downloading file:\", e)\r\n sys.exit(1)\r\n\r\n personality = AIPersonality(\"personalities_zoo/english/generic/gpt4all\")\r\n model = Model(model_path=f'models/{url.split(\"/\")[-1]}', n_ctx=2048)\r\n # If there is a disclaimer, show it\r\n if personality.disclaimer!=\"\":\r\n print()\r\n print(\"Disclaimer\")\r\n print(personality.disclaimer)\r\n print()\r\n \r\n\r\n full_discussion = personality.personality_conditioning+personality.ai_message_prefix+personality.welcome_message+personality.link_text\r\n while True:\r\n try:\r\n prompt = input(\"You: \")\r\n full_discussion+=personality.ai_message_prefix+prompt\r\n if prompt == '':\r\n continue\r\n print(f\"{personality.name}:\", end='')\r\n output=\"\"\r\n for tok in model.generate(\r\n full_discussion, \r\n n_predict=personality.model_n_predicts, \r\n temp=personality.model_temperature,\r\n top_k=personality.model_top_k,\r\n top_p=personality.model_top_p,\r\n repeat_last_n=personality.model_repeat_last_n,\r\n repeat_penalty=personality.model_repeat_penalty\r\n ):\r\n output += tok\r\n\r\n # Use Hallucination suppression system\r\n if personality.detect_antiprompt(output):\r\n break\r\n else:\r\n print(f\"{tok}\", end='', flush=True)\r\n print()\r\n except KeyboardInterrupt:\r\n print(\"Keyboard interrupt detected.\\nBye\")\r\n break\r\n print(\"Done\")\r\n print(f\"{personality}\")\r\n\r\n```\r\n\r\n# Naming Rationale\r\nFor our new multi-personality AI agent library, we wanted to come up with a naming scheme that reflected our love for science fiction and artificial intelligence. Each release of the application will feature a different AI agent with a distinct personality and set of capabilities, so we felt it was important to give each version a unique and memorable name.\r\n\r\n# Current version name: GLaDOS\r\nGLaDOS is a fictional AI character from the popular video game series \"Portal\" developed by Valve Corporation. She serves as the primary antagonist throughout the series, with her primary function being the management of the Aperture Science Enrichment Center.\r\n\r\nGLaDOS, which stands for \"Genetic Lifeform and Disk Operating System,\" is designed as a highly intelligent and manipulative AI. She speaks in a calm and monotone voice, often using sarcastic humor and passive-aggressive language to communicate with the player character, Chell.\r\n\r\nThroughout the series, GLaDOS is depicted as being both ruthless and resourceful, often using deadly force and deception to achieve her goals. Despite her malicious behavior, she is also shown to have a complex and troubled history, with much of her backstory revealed over the course of the games.\r\n\r\nOverall, GLaDOS is a memorable and iconic AI character in sci-fi culture, known for her wit, sarcasm, and unpredictable behavior.\r\n\r\n# Contributing\r\nContributions to PyAIPersonality are welcome! If you'd like to contribute, please follow these steps:\r\n\r\n1. Fork this repository\r\n2. Create a new branch (`git checkout -b my-new-branch`)\r\n3. Make your changes\r\n4. Commit your changes (`git commit -am 'Add some feature'`)\r\n5. Push to the branch (`git push origin my-new-branch`)\r\n6. Create a new pull request\r\n\r\n\r\nTo build a new personality, you only need to have a config.yaml file with the following fields:\r\n\r\n- author\r\n - YAML field: `author`\r\n - Description: The author of the personality.\r\n\r\n- version\r\n - YAML field: `version`\r\n - Description: The version number of the personality.\r\n\r\n- personality_description\r\n - YAML field: `personality_description`\r\n - Description: A description of the personality, providing information about its characteristics and behavior.\r\n\r\n- disclaimer\r\n - YAML field: `disclaimer`\r\n - Description: A disclaimer or legal statement regarding the use of the personality and any associated liabilities.\r\n\r\n- language\r\n - YAML field: `language`\r\n - Description: The language code or identifier used by the personality (e.g., \"en_US\" for American English).\r\n\r\n- category\r\n - YAML field: `category`\r\n - Description: The category or type of the personality (e.g., \"General\", \"Technical Support\", \"Entertainment\").\r\n\r\n- name\r\n - YAML field: `name`\r\n - Description: The name or title of the personality.\r\n\r\n- user_name\r\n - YAML field: `user_name`\r\n - Description: The username or identifier associated with the user interacting with the personality.\r\n\r\n- personality_conditioning\r\n - YAML field: `personality_conditioning`\r\n - Description: Information or context about the personality, including its purpose, capabilities, and origin.\r\n\r\n- ai_message_prefix\r\n - YAML field: `ai_message_prefix`\r\n - Description: The prefix or tag used to identify messages generated by the AI assistant.\r\n\r\n- welcome_message\r\n - YAML field: `welcome_message`\r\n - Description: A welcoming message displayed when interacting with the personality.\r\n\r\n- link_text\r\n - YAML field: `link_text`\r\n - Description: Additional text or formatting used for line breaks or spacing in messages.\r\n\r\n- user_message_prefix\r\n - YAML field: `user_message_prefix`\r\n - Description: The prefix or tag used to identify messages generated by the user.\r\n\r\n- anti_prompts\r\n - YAML field: `anti_prompts`\r\n - Description: A list of strings or patterns that can be used to identify and exclude certain message types from prompts or inputs.\r\n\r\n- dependencies\r\n - YAML field: `dependencies`\r\n - Description: A list of dependencies or external resources required by the personality.\r\n\r\n- model_temperature\r\n - YAML field: `model_temperature`\r\n - Description: The temperature value controlling the randomness of the AI model's responses. Higher values result in more creative outputs.\r\n\r\n- model_n_predicts\r\n - YAML field: `model_n_predicts`\r\n - Description: The number of words or tokens to generate in each response from the AI model.\r\n\r\n- model_top_k\r\n - YAML field: `model_top_k`\r\n - Description: The value of K used in the top-K sampling algorithm, controlling the diversity of the generated responses.\r\n\r\n- model_top_p\r\n - YAML field: `model_top_p`\r\n - Description: The value of p used in the nucleus sampling algorithm, controlling the diversity of the generated responses.\r\n\r\n- model_repeat_penalty\r\n - YAML field: `model_repeat_penalty`\r\n - Description: The penalty factor applied to repeated words or phrases in the generated responses to encourage more varied outputs.\r\n\r\n- model_repeat_last_n\r\n - YAML field: `model_repeat_last_n`\r\n - Description: The number of previous tokens to consider when calculating the repetition penalty.\r\n\r\n# Information\r\nFrom v 0.0.11, we have added processors which allow your personality to have a spersonalized script that is applied on the use text or the ai output text.\r\nYou must put the code inside a file called `processor.py` inside a subfolder called scripts.\r\n\r\ninside `processor.py` create a class that inherits from `from pyaipersonality import PAPScript`.\r\n\r\nHere is the current form of this class. it will have more elements in the future:\r\nLook at gpt4internetv0 and gpt4intervet examples for more information\r\n```python\r\nclass PAPScript:\r\n \"\"\"\r\n Template class for implementing personality processor classes in the PAPScript framework.\r\n\r\n This class provides a basic structure and placeholder methods for processing model inputs and outputs.\r\n Personality-specific processor classes should inherit from this class and override the necessary methods.\r\n\r\n Methods:\r\n process_model_input(text): Process the model input.\r\n process_model_output(text): Process the model output.\r\n \"\"\"\r\n def __init__(self) -> None:\r\n pass\r\n\r\n def process_model_input(self, text):\r\n \"\"\"\r\n Process the model input.\r\n\r\n This method should be overridden in the personality-specific processor class to define\r\n the desired behavior for processing the model input.\r\n\r\n Args:\r\n text (str): The model input text.\r\n\r\n Returns:\r\n Any: The processed model input.\r\n \"\"\"\r\n return None\r\n\r\n def process_model_output(self, text):\r\n \"\"\"\r\n Process the model output.\r\n\r\n This method should be overridden in the personality-specific processor class to define\r\n the desired behavior for processing the model output.\r\n\r\n Args:\r\n text (str): The model output text.\r\n\r\n Returns:\r\n Any: The processed model output.\r\n \"\"\"\r\n return None\r\n\r\n```\r\n\r\n# License\r\nPyAIPersonality is licensed under the Apache 2.0 license. See the `LICENSE` file for more information.\r\n",
"bugtrack_url": null,
"license": "",
"summary": "A python library for AI personality definition",
"version": "1.0.1",
"project_urls": {
"Homepage": "https://github.com/ParisNeo/PyAIPersonality"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "1e43c2d210847db31c23a943428c907221c2e815c11f5f20048739fcb1790bf5",
"md5": "0171a56acdd280318b39964176c1bf25",
"sha256": "4944ced3924fd6deda3cd269bd490bef6f557283c1038f9ae0bd5f67f864469a"
},
"downloads": -1,
"filename": "pyaipersonality-1.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0171a56acdd280318b39964176c1bf25",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 26308,
"upload_time": "2023-06-01T21:47:41",
"upload_time_iso_8601": "2023-06-01T21:47:41.807268Z",
"url": "https://files.pythonhosted.org/packages/1e/43/c2d210847db31c23a943428c907221c2e815c11f5f20048739fcb1790bf5/pyaipersonality-1.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "39acdb382c8c44ad7491e9987db7a46ed682af7e6c62a879700c5d825c64a84f",
"md5": "0874ca44ee12c08077f2b1142417270c",
"sha256": "de8b6e601262425254d04480c3ba5cf967e29dd2e5eb7c6ae7427ce06ec018bb"
},
"downloads": -1,
"filename": "pyaipersonality-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "0874ca44ee12c08077f2b1142417270c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 26888,
"upload_time": "2023-06-01T21:47:44",
"upload_time_iso_8601": "2023-06-01T21:47:44.796249Z",
"url": "https://files.pythonhosted.org/packages/39/ac/db382c8c44ad7491e9987db7a46ed682af7e6c62a879700c5d825c64a84f/pyaipersonality-1.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-06-01 21:47:44",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ParisNeo",
"github_project": "PyAIPersonality",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "tqdm",
"specs": []
},
{
"name": "pyyaml",
"specs": []
},
{
"name": "Pillow",
"specs": []
},
{
"name": "flask",
"specs": []
},
{
"name": "flask_socketio",
"specs": []
},
{
"name": "flask-cors",
"specs": []
},
{
"name": "simple-websocket",
"specs": []
}
],
"lcname": "pyaipersonality"
}