Skip to content

Commit

Permalink
Merge pull request Ikaros-521#726 from Ikaros-521/owner
Browse files Browse the repository at this point in the history
对接 AnythingLLM;更新投资人&文档
  • Loading branch information
Ikaros-521 authored Mar 25, 2024
2 parents d2cd6cb + bc828db commit 1726014
Show file tree
Hide file tree
Showing 13 changed files with 441 additions and 20 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<a href="//github.com/Ikaros-521/AI-Vtuber/network"><img alt="GitHub forks" src="https://img.shields.io/github/forks/Ikaros-521/AI-Vtuber?color=%2300BFFF&style=flat-square"></a>
<a href="//www.python.org"><img src="https://img.shields.io/badge/python-3.10+-blue.svg" alt="python"></a>

`Luna AI` 是一款结合了最先进技术的虚拟AI主播。它的核心是一系列高效的人工智能模型和平台,包括 `ChatterBot、GPT、Claude、langchain、chatglm、text-generation-webui、讯飞星火、智谱AI、谷歌Bard、文心一言、通义星尘、通义千问、千帆大模型、Gemini、Kimi Chat、QAnything、koboldcpp、FastGPT、Ollama、One-API`。这些模型既可以在本地运行,也可以通过云端服务提供支持。当然,为了让对话照进现实,还结合了多模态模型,包括 `Gemini` 的图像识别能力,获取电脑画面进行分析讲解。
`Luna AI` 是一款结合了最先进技术的虚拟AI主播。它的核心是一系列高效的人工智能模型和平台,包括 `ChatterBot、GPT、Claude、langchain、chatglm、text-generation-webui、讯飞星火、智谱AI、谷歌Bard、文心一言、通义星尘、通义千问、千帆大模型、Gemini、Kimi Chat、QAnything、koboldcpp、FastGPT、Ollama、One-API、AnythingLLM`。这些模型既可以在本地运行,也可以通过云端服务提供支持。当然,为了让对话照进现实,还结合了多模态模型,包括 `Gemini` 的图像识别能力,获取电脑画面进行分析讲解。

`Luna AI` 的外观由 `Live2D、Vtube Studio、xuniren、UE5 结合 Audio2Face、EasyAIVtuber、数字人视频播放器(Easy-Wav2Lip、Sadtalker、GeneFace++)` 技术打造,为用户提供了一个生动、互动的虚拟形象。这使得 `Luna AI` 能够在各大直播平台,如 `Bilibili、抖音、快手、微信视频号、斗鱼、YouTube、Twitch 和 TikTok`,进行实时互动直播。当然,它也可以在本地环境中与您进行个性化对话。

Expand Down
52 changes: 45 additions & 7 deletions config.json
Original file line number Diff line number Diff line change
Expand Up @@ -126,12 +126,40 @@
"username_max_len": 10,
"entrance_copy": [
"欢迎{username}",
"这不是{username}嘛,几天不见,这么拉了",
"这不是{username}嘛,几天不见,这么拉[了|了啊]",
"{username}来了啊,最近过得咋样",
"{username}啊,咋,想我了啊",
"{username}啊,咋,想我了[啊|吗?]",
"欢迎{username}来看我的直播,有什么问题尽管问",
"客官里面请~",
"雅座一位,请~"
"雅座一位,请~",
"{username}来了啊,吃我一拳!",
"{username}说句话呗,这里好冷,呜呜呜",
"欢迎{username}!今天过得怎么样?我这里有很多有趣的话题,一起来聊聊吧!",
"{username},好久不见啊!最近在忙什么呢?有什么新鲜事要和我分享吗?",
"{username}!终于等到你了!今天我们一起聊聊你感兴趣的话题吧!",
"{username},欢迎来看我的直播!有什么问题尽管问,我会尽力回答的!",
"{username},欢迎光临!请坐,请坐!让我来为你泡上一杯热茶,慢慢品味人生的美好!",
"{username},欢迎来我的直播间!我已经准备好了很多精彩的内容,一起来享受这场视听盛宴吧!",
"{username},你来啦!今天我们来聊点什么呢?有什么好玩的事情要和我分享吗?",
"{username},好久不见!你最近过得怎么样?有没有想我啊?",
"哟,{username},你可算来了!等你好久了,快来跟我聊聊吧!",
"嗨,{username}!盼星星盼月亮,终于把你盼来了!今天我们要聊点什么呢?",
"哇,{username},你今天看起来好迷人啊!快坐下来,让我好好看看你!",
"嘿,{username}!我的直播间好久没有这么热闹了!你的到来让这里蓬荜生辉啊!",
"哈喽,{username}!看到你的名字出现在我的直播间,我的心都快跳出来了!快来跟我互动吧!",
"嘿,{username}!我的直播间里缺少了你的笑声,快来让这里充满欢乐吧!",
"哇,{username}!你的到来让我感到无比荣幸!我已经迫不及待地想和你聊聊天了!",
"嘿,{username}!我的直播间里有你才完整!快来跟我一起度过一个愉快的时光吧!",
"哟,{username},你终于来了!我等你等得花儿都谢了!快来跟我聊聊吧!",
"哈喽,{username}!你的名字就像一缕阳光,照亮了我的直播间!快来跟我一起享受这美好的时刻吧!",
"嗨,{username}!你的名字真好听,可以告诉我你的名字有什么特别的含义吗?",
"哈喽,{username}!我觉得你很有气质,可以和你交个朋友吗?",
"哇,{username}!你的头像好酷啊,可以告诉我你是怎么做到的吗?",
"嘿,{username}!我发现你和我有很多共同的兴趣爱好,我们可以一起交流一下吗?",
"哟,{username}!你的回答好有深度啊,可以跟我分享一下你的想法吗?",
"哈喽,{username}!我觉得你很有才华,可以和你一起合作吗?",
"嘿,{username}!我注意到你在这个领域很有经验,我们可以一起探讨一下吗?",
"哇,{username}!你的观点很独特,可以跟我详细说说吗?"
],
"gift_enable": true,
"gift_random": true,
Expand All @@ -143,8 +171,8 @@
"follow_enable": true,
"follow_random": true,
"follow_copy": [
"感谢{username}的关注,爱你么么哒",
"感谢{username}的关注喵",
"感谢{username}的关注,爱你[么么哒|哦]",
"感谢{username}的关注[喵|哟]",
"{username},关注了就别取关了,我可记住你了"
],
"lowest_price": 0.1
Expand Down Expand Up @@ -403,6 +431,12 @@
"history_enable": true,
"history_max_len": 600
},
"anythingllm": {
"api_ip_port": "http://127.0.0.1:3001",
"api_key": "S1PPG9B-YP2M8NX-Q64ZBF1-Y4K5DCS",
"mode": "chat",
"workspace_slug": "test"
},
"local_qa": {
"text": {
"enable": true,
Expand Down Expand Up @@ -778,7 +812,10 @@
"random": true,
"copy": [
"当前时间是{time},这里是新的语句[1|2|3],可以在括号内随机一个数据[4|5|6]",
"请给我简单地讲一个笑话,让我在忙碌的生活中找到轻松和快乐。控制在100字以内"
"闲时任务文案模式,第2句",
"闲时任务文案模式,第3句",
"闲时任务文案模式,第4句",
"闲时任务文案模式,第5句"
]
},
"comment": {
Expand Down Expand Up @@ -1487,7 +1524,8 @@
"my_wenxinworkshop": true,
"gemini": true,
"qanything": true,
"koboldcpp": true
"koboldcpp": true,
"anythingllm": true
},
"tts": {
"edge-tts": true,
Expand Down
52 changes: 45 additions & 7 deletions config.json.bak
Original file line number Diff line number Diff line change
Expand Up @@ -126,12 +126,40 @@
"username_max_len": 10,
"entrance_copy": [
"欢迎{username}",
"这不是{username}嘛,几天不见,这么拉了",
"这不是{username}嘛,几天不见,这么拉[了|了啊]",
"{username}来了啊,最近过得咋样",
"{username}啊,咋,想我了啊",
"{username}啊,咋,想我了[啊|吗?]",
"欢迎{username}来看我的直播,有什么问题尽管问",
"客官里面请~",
"雅座一位,请~"
"雅座一位,请~",
"{username}来了啊,吃我一拳!",
"{username}说句话呗,这里好冷,呜呜呜",
"欢迎{username}!今天过得怎么样?我这里有很多有趣的话题,一起来聊聊吧!",
"{username},好久不见啊!最近在忙什么呢?有什么新鲜事要和我分享吗?",
"{username}!终于等到你了!今天我们一起聊聊你感兴趣的话题吧!",
"{username},欢迎来看我的直播!有什么问题尽管问,我会尽力回答的!",
"{username},欢迎光临!请坐,请坐!让我来为你泡上一杯热茶,慢慢品味人生的美好!",
"{username},欢迎来我的直播间!我已经准备好了很多精彩的内容,一起来享受这场视听盛宴吧!",
"{username},你来啦!今天我们来聊点什么呢?有什么好玩的事情要和我分享吗?",
"{username},好久不见!你最近过得怎么样?有没有想我啊?",
"哟,{username},你可算来了!等你好久了,快来跟我聊聊吧!",
"嗨,{username}!盼星星盼月亮,终于把你盼来了!今天我们要聊点什么呢?",
"哇,{username},你今天看起来好迷人啊!快坐下来,让我好好看看你!",
"嘿,{username}!我的直播间好久没有这么热闹了!你的到来让这里蓬荜生辉啊!",
"哈喽,{username}!看到你的名字出现在我的直播间,我的心都快跳出来了!快来跟我互动吧!",
"嘿,{username}!我的直播间里缺少了你的笑声,快来让这里充满欢乐吧!",
"哇,{username}!你的到来让我感到无比荣幸!我已经迫不及待地想和你聊聊天了!",
"嘿,{username}!我的直播间里有你才完整!快来跟我一起度过一个愉快的时光吧!",
"哟,{username},你终于来了!我等你等得花儿都谢了!快来跟我聊聊吧!",
"哈喽,{username}!你的名字就像一缕阳光,照亮了我的直播间!快来跟我一起享受这美好的时刻吧!",
"嗨,{username}!你的名字真好听,可以告诉我你的名字有什么特别的含义吗?",
"哈喽,{username}!我觉得你很有气质,可以和你交个朋友吗?",
"哇,{username}!你的头像好酷啊,可以告诉我你是怎么做到的吗?",
"嘿,{username}!我发现你和我有很多共同的兴趣爱好,我们可以一起交流一下吗?",
"哟,{username}!你的回答好有深度啊,可以跟我分享一下你的想法吗?",
"哈喽,{username}!我觉得你很有才华,可以和你一起合作吗?",
"嘿,{username}!我注意到你在这个领域很有经验,我们可以一起探讨一下吗?",
"哇,{username}!你的观点很独特,可以跟我详细说说吗?"
],
"gift_enable": true,
"gift_random": true,
Expand All @@ -143,8 +171,8 @@
"follow_enable": true,
"follow_random": true,
"follow_copy": [
"感谢{username}的关注,爱你么么哒",
"感谢{username}的关注喵",
"感谢{username}的关注,爱你[么么哒|哦]",
"感谢{username}的关注[喵|哟]",
"{username},关注了就别取关了,我可记住你了"
],
"lowest_price": 0.1
Expand Down Expand Up @@ -403,6 +431,12 @@
"history_enable": true,
"history_max_len": 600
},
"anythingllm": {
"api_ip_port": "http://127.0.0.1:3001",
"api_key": "S1PPG9B-YP2M8NX-Q64ZBF1-Y4K5DCS",
"mode": "chat",
"workspace_slug": "test"
},
"local_qa": {
"text": {
"enable": true,
Expand Down Expand Up @@ -778,7 +812,10 @@
"random": true,
"copy": [
"当前时间是{time},这里是新的语句[1|2|3],可以在括号内随机一个数据[4|5|6]",
"请给我简单地讲一个笑话,让我在忙碌的生活中找到轻松和快乐。控制在100字以内"
"闲时任务文案模式,第2句",
"闲时任务文案模式,第3句",
"闲时任务文案模式,第4句",
"闲时任务文案模式,第5句"
]
},
"comment": {
Expand Down Expand Up @@ -1487,7 +1524,8 @@
"my_wenxinworkshop": true,
"gemini": true,
"qanything": true,
"koboldcpp": true
"koboldcpp": true,
"anythingllm": true
},
"tts": {
"edge-tts": true,
Expand Down
2 changes: 1 addition & 1 deletion data/动态文案2/AI-Vtuber介绍.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
AI Vtuber 是一款结合了最先进技术的虚拟AI主播。它的核心是一系列高效的人工智能模型。包括 ChatterBot、GPT、Claude、langchain、chatglm、text-generation-webui、讯飞星火、智谱AI、谷歌Bard、文心一言、通义星尘、千帆大模型、Gemini、Kimi Chat、QAnything、koboldcpp。这些模型既可以在本地运行,也可以通过云端服务提供支持。
AI Vtuber 是一款结合了最先进技术的虚拟AI主播。它的核心是一系列高效的人工智能模型。包括 ChatterBot、GPT、Claude、langchain、chatglm、text-generation-webui、讯飞星火、智谱AI、谷歌Bard、文心一言、通义星尘、千帆大模型、Gemini、Kimi Chat、QAnything、koboldcpp、AnythingLLM。这些模型既可以在本地运行,也可以通过云端服务提供支持。

AI Vtuber 的外观由 Live2D、Vtube Studio、xuniren 和 UE5 结合 Audio2Face 技术打造。为用户提供了一个生动、互动的虚拟形象。这使得 AI Vtuber 能够在各大直播平台。如 Bilibili、抖音、快手、微信视频号、斗鱼、YouTube、Twitch 和 TikTok,进行实时互动直播。当然,它也可以在本地环境中与您进行个性化对话。

Expand Down
Binary file modified docs/AI Vtuber.xmind
Binary file not shown.
Binary file modified docs/xmind.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions docs/投资人/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,11 @@
avatar: "https://images.cnblogs.com/cnblogs_com/ikaros-521/2328032/o_230920161039_111.jpg",
amount: "¥188"
},
{
name: "Aezzn",
avatar: "https://images.cnblogs.com/cnblogs_com/ikaros-521/2328032/o_240324155533_QQ%E5%9B%BE%E7%89%8720240324235457.jpg",
amount: "¥188"
},
{
name: "花开一季",
avatar: "https://images.cnblogs.com/cnblogs_com/ikaros-521/2328032/o_230817152316_QQ%E5%9B%BE%E7%89%8720230817232145.jpg",
Expand Down Expand Up @@ -431,6 +436,11 @@
avatar: "https://images.cnblogs.com/cnblogs_com/ikaros-521/2328032/o_230723115608_QQ%E5%9B%BE%E7%89%8720230723195602.png",
amount: "¥20"
},
{
name: "海狸",
avatar: "https://images.cnblogs.com/cnblogs_com/ikaros-521/2328032/o_240324155746_QQ%E5%9B%BE%E7%89%8720240324235713.jpg",
amount: "¥20"
},
{
name: "神奇",
avatar: "https://images.cnblogs.com/cnblogs_com/ikaros-521/2328032/o_230818010903_QQ%E5%9B%BE%E7%89%8720230818090732.png",
Expand Down
Binary file modified docs/投资人/invest.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
134 changes: 134 additions & 0 deletions tests/test_anythingllm/api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
import json, logging, traceback
import requests
from urllib.parse import urljoin

# from utils.common import Common
# from utils.logger import Configure_logger


class AnythingLLM:
def __init__(self, data):
# self.common = Common()
# 日志文件路径
# file_path = "./log/log-" + self.common.get_bj_time(1) + ".txt"
# Configure_logger(file_path)

self.config_data = data
self.headers = {
"Accept": "application/json",
"Authorization": f"Bearer {self.config_data['api_key']}"
}
self.workspaces_list = []

# 验证密钥
def verify_auth(self):
try:
url = urljoin(self.config_data["api_ip_port"], "/api/v1/auth")


response = requests.get(url, headers=self.headers)
response.raise_for_status() # 检查响应的状态码

result = response.content
ret = json.loads(result)

logging.debug(ret)
if "authenticated" in ret:
return True

logging.error(f"AnythingLLM API密钥 验证失败: {ret['message']}")
return False
except Exception as e:
logging.error(traceback.format_exc())
return False

# 获取工作区列表
def get_workspaces_list(self):
try:
url = urljoin(self.config_data["api_ip_port"], "/api/v1/workspaces")


response = requests.get(url, headers=self.headers)
response.raise_for_status() # 检查响应的状态码

result = response.content
ret = json.loads(result)

logging.debug(ret)
if "workspaces" in ret:
self.workspaces_list = ret["workspaces"]
return ret["workspaces"]

logging.error(f"AnythingLLM 获取工作区列表失败: {ret['message']}")
return None
except Exception as e:
logging.error(traceback.format_exc())
return None

def get_resp(self, data):
"""请求对应接口,获取返回值
Args:
data (dict): 你的提问
Returns:
str: 返回的文本回答
"""
try:
url = urljoin(self.config_data["api_ip_port"], f"/api/v1/workspace/{self.config_data['workspace_slug']}/chat")

if "mode" in data:
mode = data["mode"]
else:
mode = self.config_data["mode"]

data_json = {
"message": data["prompt"],
"mode": mode
}

response = requests.post(url=url, json=data_json, headers=self.headers)
response.raise_for_status() # 检查响应的状态码

result = response.content
ret = json.loads(result)

logging.debug(ret)

if "textResponse" in ret:
return ret["textResponse"]

logging.error(f"AnythingLLM 对话失败: {ret['message']}")
return None
except Exception as e:
logging.error(traceback.format_exc())
return None


if __name__ == '__main__':
# 配置日志输出格式
logging.basicConfig(
level=logging.DEBUG, # 设置日志级别,可以根据需求调整
format="%(asctime)s [%(levelname)s] %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)

data = {
"api_ip_port": "http://127.0.0.1:3001",
"api_key": "S1PPG9B-YP2M8NX-Q64ZBF1-Y4K5DCS",
"mode": "chat",
"workspace_slug": "test"
}
anythingllm = AnythingLLM(data)

# 验证密钥
if anythingllm.verify_auth():
# 获取返回值

anythingllm.get_workspaces_list()

logging.info(anythingllm.get_resp({"prompt": "你可以扮演猫娘吗,每句话后面加个喵"}))
logging.info(anythingllm.get_resp({"prompt": "早上好"}))

logging.info(anythingllm.get_resp({"prompt": "伊卡洛斯和妮姆芙的关系", "mode": "chat"}))
#logging.info(anythingllm.get_resp({"prompt": "伊卡洛斯的英文名", "mode": "chat"}))
Loading

0 comments on commit 1726014

Please sign in to comment.