Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/main'
Browse files Browse the repository at this point in the history
  • Loading branch information
bentwnghk committed Dec 6, 2023
2 parents c52c8c4 + 44081a0 commit 5bfc5b1
Show file tree
Hide file tree
Showing 18 changed files with 288 additions and 38 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<div align="right">
<!-- 语言: -->
简体中文 | <a title="English" href="./readme/README_en.md">English</a> | <a title="Japanese" href="./readme/README_ja.md">日本語</a> | <a title="Russian" href="./readme/README_ru.md">Russian</a>
简体中文 | <a title="English" href="./readme/README_en.md">English</a> | <a title="Japanese" href="./readme/README_ja.md">日本語</a> | <a title="Russian" href="./readme/README_ru.md">Russian</a> | <a title="Korean" href="README_ko.md">한국어</a>
</div>

<h1 align="center">川虎 Chat 🐯 Chuanhu Chat</h1>
Expand Down
24 changes: 12 additions & 12 deletions locale/ko_KR.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"⚠️ 为保证API-Key安全,请在配置文件`config.json`中修改网络设置": "⚠️ API-Key의 안전을 보장하기 위해 네트워크 설정을 `config.json` 구성 파일에서 수정해주세요.",
"。你仍然可以使用聊天功能。": ". 채팅 기능을 계속 사용할 수 있습니다.",
"上传": "업로드",
"上传了": "업로드되었습니다.",
"上传了": "업로드완료.",
"上传到 OpenAI 后自动填充": "OpenAI로 업로드한 후 자동으로 채워집니다",
"上传到OpenAI": "OpenAI로 업로드",
"上传文件": "파일 업로드",
Expand Down Expand Up @@ -56,14 +56,14 @@
"对话历史": "대화 내역",
"对话历史记录": "대화 기록",
"对话命名方式": "대화 이름 설정",
"导出为 Markdown": "마크다운으로 내보내기",
"导出为 Markdown": "Markdown으로 내보내기",
"川虎Chat": "Chuanhu Chat",
"川虎Chat 🚀": "Chuanhu Chat 🚀",
"工具箱": "도구 상자",
"已经被删除啦": "이미 삭제되었습니다.",
"开始实时传输回答……": "실시간 응답 출력 시작...",
"开始训练": "훈련 시작",
"微调": "미세 조정",
"微调": "파인튜닝",
"总结": "요약",
"总结完成": "작업 완료",
"您使用的就是最新版!": "최신 버전을 사용하고 있습니다!",
Expand All @@ -80,7 +80,7 @@
"更新失败,请尝试[手动更新](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/使用教程#手动更新)": "업데이트 실패, [수동 업데이트](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/使用教程#手动更新)를 시도하십시오",
"更新成功,请重启本程序": "업데이트 성공, 이 프로그램을 재시작 해주세요",
"未命名对话历史记录": "이름없는 대화 기록",
"未设置代理...": "대리인이 설정되지 않았습니다...",
"未设置代理...": "프록시가 설정되지 않았습니다...",
"本月使用金额": "이번 달 사용금액",
"查看[使用介绍](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/使用教程#微调-gpt-35)": "[사용 가이드](https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/使用教程#微调-gpt-35) 보기",
"根据日期时间": "날짜 및 시간 기준",
Expand All @@ -95,17 +95,17 @@
"用于定位滥用行为": "악용 사례 파악에 활용됨",
"用户标识符": "사용자 식별자",
"由Bilibili [土川虎虎虎](https://space.bilibili.com/29125536)、[明昭MZhao](https://space.bilibili.com/24807452) 和 [Keldos](https://github.com/Keldos-Li) 开发<br />访问川虎Chat的 [GitHub项目](https://github.com/GaiZhenbiao/ChuanhuChatGPT) 下载最新版脚本": "제작: Bilibili [土川虎虎虎](https://space.bilibili.com/29125536), [明昭MZhao](https://space.bilibili.com/24807452), [Keldos](https://github.com/Keldos-Li)\n\n최신 코드 다운로드: [GitHub](https://github.com/GaiZhenbiao/ChuanhuChatGPT)",
"知识库": "지식 라이브러리",
"知识库文件": "지식 라이브러리 파일",
"知识库": "knowledge base",
"知识库文件": "knowledge base 파일",
"第一条提问": "첫 번째 질문",
"索引构建完成": "인덱스 구축이 완료되었습니다.",
"网络": "네트워크",
"获取API使用情况失败:": "API 사용량 가져오기 실패:",
"获取IP地理位置失败。原因:": "다음과 같은 이유로 IP 위치를 가져올 수 없습니다. 이유: ",
"获取对话时发生错误,请查看后台日志": "대화를 가져오는 중 에러가 발생했습니다. 백그라운드 로그를 확인하세요",
"训练": "훈련",
"训练状态": "훈련 상태",
"训练轮数(Epochs)": "훈련 라운드(Epochs)",
"训练": "학습",
"训练状态": "학습 상태",
"训练轮数(Epochs)": "학습 Epochs",
"设置": "설정",
"设置保存文件名": "저장 파일명 설정",
"设置文件名: 默认为.json,可选为.md": "파일 이름 설정: 기본값: .json, 선택: .md",
Expand All @@ -114,7 +114,7 @@
"请查看 config_example.json,配置 Azure OpenAI": "Azure OpenAI 설정을 확인하세요",
"请检查网络连接,或者API-Key是否有效。": "네트워크 연결 또는 API키가 유효한지 확인하세요",
"请输入对话内容。": "대화 내용을 입력하세요.",
"请输入有效的文件名,不要包含以下特殊字符:": "유효한 파일 이름을 입력하세요. 다음 특수 문자는 포함하지 마세요: ",
"请输入有效的文件名,不要包含以下特殊字符:": "유효한 파일 이름을 입력하세요. 다음 특수 문자를 포함하지 마세요: ",
"读取超时,无法获取对话。": "읽기 시간 초과, 대화를 가져올 수 없습니다.",
"账单信息不适用": "청구 정보를 가져올 수 없습니다",
"连接超时,无法获取对话。": "연결 시간 초과, 대화를 가져올 수 없습니다.",
Expand All @@ -128,7 +128,7 @@
"高级": "고급",
",本次对话累计消耗了 ": ",이 대화의 전체 비용은 ",
"💾 保存对话": "💾 대화 저장",
"📝 导出为 Markdown": "📝 마크다운으로 내보내기",
"📝 导出为 Markdown": "📝 Markdown으로 내보내기",
"🔄 切换API地址": "🔄 API 주소 변경",
"🔄 刷新": "🔄 새로고침",
"🔄 检查更新...": "🔄 업데이트 확인...",
Expand All @@ -139,4 +139,4 @@
"🗑️ 删除最旧对话": "🗑️ 가장 오래된 대화 삭제",
"🧹 新的对话": "🧹 새로운 대화",
"正在获取IP地址信息,请稍候...": "IP 주소 정보를 가져오는 중입니다. 잠시만 기다려주세요...",
}
}
2 changes: 1 addition & 1 deletion modules/models/ChuanhuAgent.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
from langchain.tools import BaseTool, StructuredTool, Tool, tool
from langchain.callbacks.stdout import StdOutCallbackHandler
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
from langchain.callbacks.manager import BaseCallbackManager
from langchain.callbacks.base import BaseCallbackManager
from duckduckgo_search import DDGS
from itertools import islice

Expand Down
38 changes: 38 additions & 0 deletions modules/models/DALLE3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import re
import json
import openai
from openai import OpenAI
from .base_model import BaseLLMModel
from .. import shared
from ..config import retrieve_proxy


class OpenAI_DALLE3_Client(BaseLLMModel):
def __init__(self, model_name, api_key, user_name="") -> None:
super().__init__(model_name=model_name, user=user_name)
self.api_key = api_key

def _get_dalle3_prompt(self):
prompt = self.history[-1]["content"]
if prompt.endswith("--raw"):
prompt = "I NEED to test how the tool works with extremely simple prompts. DO NOT add any detail, just use it AS-IS:" + prompt
return prompt

@shared.state.switching_api_key
def get_answer_at_once(self):
prompt = self._get_dalle3_prompt()
with retrieve_proxy():
client = OpenAI(api_key=openai.api_key)
try:
response = client.images.generate(
model="dall-e-3",
prompt=prompt,
size="1024x1024",
quality="standard",
n=1,
)
except openai.BadRequestError as e:
msg = str(e)
match = re.search(r"'message': '([^']*)'", msg)
return match.group(1), 0
return f'<!-- S O PREFIX --><a data-fancybox="gallery" target="_blank" href="{response.data[0].url}"><img src="{response.data[0].url}" /></a><!-- E O PREFIX -->{response.data[0].revised_prompt}', 0
7 changes: 5 additions & 2 deletions modules/models/base_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
from enum import Enum

from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
from langchain.callbacks.manager import BaseCallbackManager
from langchain.callbacks.base import BaseCallbackManager

from typing import Any, Dict, List, Optional, Union

Expand Down Expand Up @@ -153,6 +153,7 @@ class ModelType(Enum):
Qwen = 15
OpenAIVision = 16
ERNIE = 17
DALLE3 = 18

@classmethod
def get_type(cls, model_name: str):
Expand Down Expand Up @@ -195,6 +196,8 @@ def get_type(cls, model_name: str):
model_type = ModelType.Qwen
elif "ernie" in model_name_lower:
model_type = ModelType.ERNIE
elif "dall" in model_name_lower:
model_type = ModelType.DALLE3
else:
model_type = ModelType.LLaMA
return model_type
Expand Down Expand Up @@ -876,7 +879,7 @@ def auto_name_chat_history(
if type(user_question) == list:
user_question = user_question[0]["text"]
filename = replace_special_symbols(user_question)[:16] + ".json"
return self.rename_chat_history(filename, chatbot, self.user_name)
return self.rename_chat_history(filename, chatbot)
else:
return gr.update()

Expand Down
4 changes: 4 additions & 0 deletions modules/models/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,10 @@ def get_model(
elif model_type == ModelType.ERNIE:
from .ERNIE import ERNIE_Client
model = ERNIE_Client(model_name, api_key=os.getenv("ERNIE_APIKEY"),secret_key=os.getenv("ERNIE_SECRETKEY"))
elif model_type == ModelType.DALLE3:
from .DALLE3 import OpenAI_DALLE3_Client
access_key = os.environ.get("OPENAI_API_KEY", access_key)
model = OpenAI_DALLE3_Client(model_name, api_key=access_key, user_name=user_name)
elif model_type == ModelType.Unknown:
raise ValueError(f"未知模型: {model_name}")
logging.info(msg)
Expand Down
1 change: 1 addition & 0 deletions modules/presets.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@
LOCAL_MODELS = [
"川虎助理",
"川虎助理 Pro",
"DALL-E 3",
"GooglePaLM",
"xmchat",
"Azure OpenAI",
Expand Down
5 changes: 4 additions & 1 deletion modules/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ def clip_rawtext(chat_message, need_escape=True):
message_clipped = chat_message[: hr_match.start()] if hr_match else chat_message
# second, avoid agent-prefix being escaped
agent_prefix_pattern = (
r'(<!-- S O PREFIX --><p class="agent-prefix">.*?<\/p><!-- E O PREFIX -->)'
r'(<!-- S O PREFIX -->.*?<!-- E O PREFIX -->)'
)
# agent_matches = re.findall(agent_prefix_pattern, message_clipped)
agent_parts = re.split(agent_prefix_pattern, message_clipped, flags=re.DOTALL)
Expand All @@ -257,6 +257,7 @@ def clip_rawtext(chat_message, need_escape=True):
else f'<pre class="fake-pre">{part}</pre>'
)
else:
part = part.replace(' data-fancybox="gallery"', '')
final_message += part
return final_message

Expand Down Expand Up @@ -385,6 +386,7 @@ def save_file(filename, model, chatbot):
"system": system,
"history": history,
"chatbot": chatbot,
"model_name": model.model_name,
"single_turn": model.single_turn,
"temperature": model.temperature,
"top_p": model.top_p,
Expand Down Expand Up @@ -429,6 +431,7 @@ def sorted_by_last_modified_time(list, dir):


def get_file_names_by_type(dir, filetypes=[".json"]):
os.makedirs(dir, exist_ok=True)
logging.debug(f"获取文件名列表,目录为{dir},文件类型为{filetypes}")
files = []
for type in filetypes:
Expand Down
1 change: 1 addition & 0 deletions modules/webui.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ def reload_javascript():
js = javascript_html()
js += '<script async type="module" src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>'
js += '<script async type="module" src="http://spin.js.org/spin.umd.js"></script><link type="text/css" href="https://spin.js.org/spin.css" rel="stylesheet" />'
js += '<script async src="https://cdn.jsdelivr.net/npm/@fancyapps/ui@5.0/dist/fancybox/fancybox.umd.js"></script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui@5.0/dist/fancybox/fancybox.css" />'

meta = """
<meta name="apple-mobile-web-app-title" content="川虎 Chat">
Expand Down
2 changes: 1 addition & 1 deletion readme/README_en.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<div align="right">
<!-- Language: -->
<a title="Chinese" href="../README.md">简体中文</a> | English | <a title="Japanese" href="README_ja.md">日本語</a> | <a title="Russian" href="README_ru.md">Russian</a>
<a title="Chinese" href="../README.md">简体中文</a> | English | <a title="Japanese" href="README_ja.md">日本語</a> | <a title="Russian" href="README_ru.md">Russian</a> | <a title="Korean" href="README_ko.md">한국어</a>
</div>

<h1 align="center">川虎 Chat 🐯 Chuanhu Chat</h1>
Expand Down
2 changes: 1 addition & 1 deletion readme/README_ja.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<div align="right">
<!-- Language: -->
<a title="Chinese" href="../README.md">简体中文</a> | <a title="English" href="README_en.md">English</a> | 日本語 | <a title="Russian" href="README_ru.md">Russian</a>
<a title="Chinese" href="../README.md">简体中文</a> | <a title="English" href="README_en.md">English</a> | 日本語 | <a title="Russian" href="README_ru.md">Russian</a> | <a title="Korean" href="README_ko.md">한국어</a>
</div>

<h1 align="center">川虎 Chat 🐯 Chuanhu Chat</h1>
Expand Down
Loading

0 comments on commit 5bfc5b1

Please sign in to comment.