Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/llmkira/openai-kira
📦Package|GPT3.5 chat async client with support for NLP search context retention and real-time network support, as a pre-release replacement for ChatGpt.💐
https://github.com/llmkira/openai-kira
chatgpt gpt3 openai openai-api
Last synced: about 2 months ago
JSON representation
📦Package|GPT3.5 chat async client with support for NLP search context retention and real-time network support, as a pre-release replacement for ChatGpt.💐
- Host: GitHub
- URL: https://github.com/llmkira/openai-kira
- Owner: LlmKira
- License: lgpl-2.1
- Archived: true
- Created: 2023-01-01T15:49:26.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-04-02T00:50:04.000Z (over 1 year ago)
- Last Synced: 2024-09-27T13:41:25.886Z (about 2 months ago)
- Topics: chatgpt, gpt3, openai, openai-api
- Language: Python
- Homepage: https://github.com/sudoskys/llm-kira/
- Size: 6.67 MB
- Stars: 11
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# openai-kira
**New Era: https://github.com/sudoskys/llm-kira/ this repo No longer maintained**
Openai GPT3 ChatBot 框架包,在未公开前快速实现类 ChatGPT接入(公开后就接入chatGPT),打包成依赖的玩具。提供 redis 和 文件数据库
两个选择。`auto_adjust` 的功能有几率触发 Openai Api 服务器的内部错误。
## Use
`pip install -U openai-kira`
**init**
```python
import openai_kira#
openai_kira.setting.redisSetting = openai_kira.setting.RedisConfig()
openai_kira.setting.dbFile = "openai_msg.db"
openai_kira.setting.openaiApiKey = ["key", "key2"]
openai_kira.setting.proxyUrl = None # "127.0.0.1"
# 插件的设置
openai_kira.setting.webServerUrlFilter = False
openai_kira.setting.webServerStopSentence = ["广告", "营销号"]
```## Exp
SEE `./test` for More Exp!
```python
import asyncioimport openai_kira
from openai_kira import Chatprint(openai_kira.RedisConfig())
openai_kira.setting.openaiApiKey = ["key"]receiver = Chat.Chatbot(
conversation_id=10086,
call_func=None, # Api_keys.pop_api_key,
start_sequ="Ai:",
restart_sequ="Human:",
)async def main():
response = await receiver.get_chat_response(model="text-davinci-003",
prompt="你好",
max_tokens=500,
role="你扮演...",
web_enhance_server={"time": ""}
)
print(response)asyncio.run(main())
``````python
import asyncio
import openai_kiraprint(openai_kira.RedisConfig())
openai_kira.setting.openaiApiKey = ["key"]
print(openai_kira.setting.openaiApiKey)async def main():
try:
response = await openai_kira.Completion().create(model="text-davinci-003",
prompt="Say this is a test",
temperature=0,
max_tokens=20)
# TEST
print(response)
print(type(response))
except Exception as e:
print(e)
if "Incorrect API key provided" in e:
print("OK")
else:
print("NO")asyncio.run(main())
```## Plugin
**Table**
| plugins | desc | value/server | use |
|-----------|-------------------|-------------------------------------------------------|---------------------------------------|
| `time` | now time | `""`,no need | `明昨今天`.... |
| `week` | week time | `""`,no need | `周几` ..... |
| `search` | Web Search | `["some.com?searchword={}"]`,must need | `查询` `你知道` len<80 / end with`?`len<15 |
| `duckgo` | Web Search | `""`,no need,but need `pip install duckduckgo_search` | `查询` `你知道` len<80 / end with`?`len<15 |
| `details` | answer with steps | `""`,no need | Ask for help `how to` |## Plugin dev
There is a middleware between the memory pool and the analytics that provides some networked retrieval support and
operational support. It can be spiked with services that interface to other Api's.**Prompt Injection**
Use `""` `[]` to emphasise content.
### Exp
First create a file in `openai_kira/Chat/module/plugin` without underscores (`_`) in the file name.
**Template**
```python
from ..platform import ChatPlugin, PluginConfig
from ._plugin_tool import PromptTool
import os
from loguru import loggermodulename = os.path.basename(__file__).strip(".py")
@ChatPlugin.plugin_register(modulename)
class Week(object):
def __init__(self):
self._server = None
self._text = None
self._time = ["time", "多少天", "几天", "时间", "几点", "今天", "昨天", "明天", "几月", "几月", "几号",
"几个月",
"天前"]def requirements(self):
return []async def check(self, params: PluginConfig) -> bool:
if PromptTool.isStrIn(prompt=params.text, keywords=self._time):
return True
return Falseasync def process(self, params: PluginConfig) -> list:
_return = []
self._text = params.text
# 校验
if not all([self._text]):
return []
# GET
from datetime import datetime, timedelta, timezone
utc_dt = datetime.utcnow().replace(tzinfo=timezone.utc)
bj_dt = utc_dt.astimezone(timezone(timedelta(hours=8)))
now = bj_dt.strftime("%Y-%m-%d %H:%M")
_return.append(f"Current Time UTC8 {now}")
# LOGGER
logger.trace(_return)
return _return
````openai_kira/Chat/module/plugin/_plugin_tool.py` provides some tool classes, PR is welcome
**Testing**
You cannot test directly from within the module package, please run the `openai_kira/Chat/test_module.py` file to test
the module, with the prompt matching check.Alternatively, you can safely use `from loguru import logger` + `logger.trace(_return)` in the module to debug the
module variables and the trace level logs will not be output by the production environment.## 结构
```markdown
.
└── openai_kira
├── api
│ ├── api_url.json
│ ├── api_utils.py
│ ├── network.py
├── Chat
│ ├── __init__.py
│ ├── module
│ ├── Summer.py
│ ├── test_module.py
│ ├── text_analysis_tools
│ └── vocab.json
├── __init__.py
├── requirements.txt
├── resouce
│ ├── completion.py
│ ├── __init__.py
└── utils
├── data.py
├── Network.py
└── Talk.py
```## EULA(end-user-license-agreement)
**cn**
1. 自行因为不当操作导致的损失。
2. 本项目并非官方项目。
3. 因为安全事故导致的损失我不负责。
4. 拒绝未经授权的专利/软著相关用途。**en**
1. the damage caused by improper operation on its own.
2. This is not an official project.
3. I am not responsible for any damage caused by safety incidents.