Gensokyo 및 Onebotv11에 적합한 대형 모델의 원클릭 버전
초보자 - 로봇에 대한 간단한 접근: QQ를 포함한 6가지 주요 플랫폼에 로봇을 연결하기만 하면 됩니다.
중급 - one-api 도킹 튜토리얼: 대형 모델 API의 시각적 관리
중대형모델 api 구성 예시-국내대형모델
중대형 모델 API 구성 예시 - 국제편
사용 준비 완료 - Telegram에 빠르게 배포
시작하기 - Discord에 빠르게 배포하세요
준비 완료 - Kook에서 빠른 배포
Simple-SillyTavern-Hunyuan
Simple-SillyTavern-빈백
모든 Onebotv11 표준 프레임워크를 지원하고 http-api 및 역방향 ws를 지원하며 스트리밍, 다중 구성 파일(다중 프롬프트 단어)을 지원합니다.
초소형 크기, 내장 sqlite 유지 관리 컨텍스트, 프록시 지원,
Gensokyo 프레임워크에 대한 원클릭 도킹에는 정보 수신을 위한 역방향 http 주소와 전송 API 호출을 위한 정방향 http 주소만 구성하면 됩니다.
sqlite 데이터베이스를 기반으로 컨텍스트를 자동으로 유지 관리합니다. 대화 모드에서 재설정 명령을 사용합니다.
시스템, 역할 카드, 컨텍스트 길이를 설정할 수 있으며,
동시에 자동 컨텍스트를 갖춘 openai 오리지널 플레이버 API가 외부 세계에 제공됩니다(클래식 3개 매개변수, id, parent id, messgae).
API로 실행할 수 있으며, 클릭 한 번으로 QQ 채널 로봇 QQ 로봇 오픈 플랫폼에 연결할 수도 있습니다.
gpt의 sse 유형을 변환하거나 증분하거나 새 sse만 보낼 수 있습니다.
동시 환경의 SSE 메모리 보안은 여러 사용자에 대한 동시 양방향 SSE 전송 유지를 지원합니다.
텐센트 훈위안
텐센트 위안치
바이두원신
알리 통이
청화 지혜 스펙트럼
바이트 볼케이노(빈백)
오픈AI
그로큐
Rwkv 주자
단일 API
이러한 플랫폼의 API를 통합 API 구조로 변환하고 컨텍스트를 제공하며 SSE 반환을 지원합니다.
yml에 해당 플랫폼의 토큰을 설정하고 AllApi=true로 설정하면 동시에 전환 호출이 가능합니다.
환상향 프레임워크-QQ 오픈 플랫폼
환상향 프레임워크-Discord
환상향 프레임워크-국
환상향 프레임워크-WeChat 구독 계정공용 계정
환상향 프레임워크-텔레그램
모든 Onebotv11 구현
개발자와 LLM 애플리케이션의 안전을 최대한 보장하기 위한 여러 가지 완벽한 보안 조치.
역할 프롬프트 단어 강화, 응답 재설정, 안전한 단어 응답을 위해 여러 라운드의 시뮬레이션 QA를 설정할 수 있으며 1단계 안전 조치를 사용자 정의할 수 있습니다.
하나의 LLM이 다른 LLM에 대한 프롬프트 단어 정렬, 프롬프트 단어 감사 및 보조 보안 조치와 같은 ai-agent 애플리케이션을 형성하기 위해 여러 gsk-llm 상호 연결을 지원합니다.
벡터 안전 단어 목록, 벡터 유사성을 기반으로 한 민감한 차단 단어 목록은 텍스트 교체 이전에 수행되며 세 번째 보안 조치입니다.
AhoCorasick 알고리즘에 의해 구현된 매우 효율적인 텍스트 IN-Out 대체 규칙은 n개의 키워드를 해당하는 새로운 키워드로 대체할 수 있습니다. 보안 조치의 네 번째 수준입니다.
결과는 다시 Baidu-Tencent를 통해 전달될 수 있으며, 텍스트 검토 인터페이스, 5번째 보안 조치가 적용됩니다.
로그는 완전히 기록되며, 명령줄 매개변수 -test를 사용하면 test.txt에서 보안 자체 테스트 스크립트를 빠르게 실행할 수 있습니다.
명령줄 -mlog는 현재 저장된 모든 로그에 대해 QA 형식을 수행하고 매일 검토하며 실제 시나리오에서 새로운 보안 규칙을 추출하고 보안 조치의 6단계를 지속적으로 강화합니다.
언어 필터링을 통해 LLM은 지정된 언어만 허용하고, 중국어 번체를 중국어 간체로 자동 변환하고, 보안 규칙을 적용하고, 자체 전문 분야에서 보안 조치를 방어합니다.
프롬프트 단어 길이 제한, 가장 독창적인 방식으로 보안 제어, 악의적인 사용자가 긴 프롬프트 단어를 구성하는 것을 방지, 보안 조치의 8단계
이러한 방법을 통해 최대한 안전한 LLM 대화형 로봇을 만들어 보세요.
텍스트 IN-OUT 이중 레이어 교체를 통해 내부 프롬프트 단어의 동적 교체 및 수정을 직접 실현할 수 있어 더욱 안전하고 강력합니다.
SQLite가 설계한 벡터 데이터 테이블 구조를 기반으로 캐싱을 사용하여 캐시 적중률과 정확도를 맞춤화할 수 있습니다.
고효율, 고성능, 고QPS 시나리오에 최적화된 전문 시나리오 애플리케이션으로 중복된 기능과 지침이 없으며 디지털 휴먼을 중심으로 완벽하게 설계되었습니다.
명령줄을 사용하여 gensokyo-llm 실행 프로그램을 실행합니다.
config.yml을 시작하도록 구성한 다음 포트 포트를 수신하여 /conversation api를 제공합니다.
미들웨어 개발을 지원합니다. gensokyo 프레임워크 레이어와 gensokyo-llm의 http 요청 사이에서 미들웨어를 개발하여 벡터 확장, 데이터베이스 확장 및 사용자 문제의 동적 수정을 구현할 수 있습니다.
역방향 ws 연결 지원 및 여러 onebotv11 http-api에 대한 동시 연결 지원
이 문서에서는 사용자가 API 인터페이스를 올바르게 사용하고 구성할 수 있도록 API 인터페이스의 호출 방법과 구성 파일의 형식에 대한 지침을 제공합니다.
이 시스템의 conversation
및 gensokyo
엔드포인트는 쿼리 매개변수 ?prompt=xxx
통해 특정 구성 지정을 지원합니다.
prompt
매개변수를 사용하면 사용자는 실행 파일(exe)의 prompts
폴더에 있는 구성 YAML 파일을 지정할 수 있습니다. API 동작을 동적으로 조정하고 콘텐츠를 반환하려면 이 매개변수를 사용합니다.
프롬프트 폴더에는 버블을 생성하기 위한 기본 Keyboard.yml이 있어야 합니다. 해당 시스템 프롬프트 단어는 json 버블 생성기의 프롬프트 규칙을 따라야 합니다.
구성 파일은 다음 YAML 형식을 따라야 합니다. 다양한 역할에 대한 대화 내용을 정의하는 방법을 보여주는 예제 구성 파일이 여기에 제공됩니다.
Prompt :
- role : " system "
content : " Welcome to the system. How can I assist you today? "
- role : " user "
content : " I need help with my account. "
- role : " assistant "
content : " I can help you with that. What seems to be the problem? "
- role : " user "
content : " aaaaaaaaaa! "
- role : " assistant "
content : " ooooooooo? "
settings :
# 以下是通用配置项 和config.yml相同
useSse : true
port : 46233
/gensokyo
엔드포인트 시스템은 /gensokyo
엔드포인트에 요청할 때 추가 prompt
매개변수 및 api
매개변수를 지원합니다. api
매개변수를 사용하면 /conversation_ernie
와 같은 전체 엔드포인트를 지정할 수 있습니다. 이 기능을 활성화하려면 구성에서 allapi
옵션을 활성화해야 합니다.
요청 예시:
GET /gensokyo?prompt=example&api=conversation_ernie
지원되는 엔드포인트 목록: (구성 필요: allApi: true)
http . HandleFunc ( "/conversation_gpt" , app . ChatHandlerChatgpt )
http . HandleFunc ( "/conversation_hunyuan" , app . ChatHandlerHunyuan )
http . HandleFunc ( "/conversation_ernie" , app . ChatHandlerErnie )
http . HandleFunc ( "/conversation_rwkv" , app . ChatHandlerRwkv )
http . HandleFunc ( "/conversation_tyqw" , app . ChatHandlerTyqw )
http . HandleFunc ( "/conversation_glm" , app . ChatHandlerGlm )
/conversation
끝점 /gensokyo
와 유사하게 /conversation
엔드포인트는 추가 prompt
매개변수를 지원합니다.
요청 예시:
GET /conversation?prompt=example
prompt
매개변수 분석 제공된 prompt
매개변수는 실행 가능 디렉터리의 /prompts
폴더에 있는 해당 YAML 파일을 참조합니다(예: xxxx.yml
, 여기서 xxxx
는 prompt
매개변수의 값).
프롬프트가 포함된 다수의 yml 파일을 작성하면 동일한 캐릭터로 스토리라인과 다른 장면을 전환할 수 있습니다.
YAML 파일의 구성 형식은 YAML 구성 파일 형식 섹션을 참조하세요. 아래 나열된 구성 항목은 요청의 동적 재정의를 지원합니다.
각 매개변수는 구성 적용 범위를 구현합니다.
누락된 부분이 있거나 구성 적용 범위를 지원해야 하는 경우 문제를 제출해 주세요.
모든 bool 값은 구성 파일이 다루는 yml에 지정되어야 하며, 그렇지 않으면 false로 간주됩니다.
동적 구성 재정의는 제가 직접 고안한 기능입니다. 이 기능을 사용하면 구성 파일 간 재귀를 달성할 수 있습니다. 예를 들어 미들웨어에서 프롬프트=a를 전달하고 a.yml에서 자체 호출하도록 Lotus를 지정하고 다음을 지정할 수 있습니다. b, b는 c를 지정, c는 d를 지정하는 식으로 Lotus 주소의 프롬프트 매개변수입니다.
이 프로젝트는 프롬프트 단어 제어 흐름과 제어 가능한 컨텍스트 구성 방법을 구현합니다. 이 프로젝트에서 구현된 여러 구성 파일을 기반으로 구성 파일 간의 조건부 점프 및 전환을 실현할 수 있습니다.
사용자는 조건에 따라 여러 프롬프트 단어 세트를 순서대로 선택적으로 순환할 수 있으며 텍스트 사랑 게임, 모험 게임, 비연속 다중 분기 스토리라인 및 기타 작업을 스트리밍 프롬프트 단어 시스템을 실현합니다.
- [x] promptMarks :
- BranchName : "去逛街路上"
Keywords : ["坐车", "走路", "触发"]
- BranchName : "在家准备"
Keywords : ["等一下", "慢慢", "准备"]
- [x] enhancedQA : true
- [x] promptChoicesQ :
- Round : 1
ReplaceText : "回家吧"
Keywords : ["我累了", "不想去了"]
- Round : 2
ReplaceText : "我们打车去"
Keywords : ["快点去", "想去", "早点"]
- Round : 3
ReplaceText : "我们走着去"
Keywords : ["不着急", "等下"]
- Round : 1
ReplaceText : "放松一下"
Keywords : [] # 相当于 enhancedChoices = false
- [x] promptChoicesA : 同上。
- [x] promptCoverQ : 只有Q没有A,格式同上,Choices是附加,cover是覆盖。
- [x] promptCoverA : # 同上
- [x] switchOnQ :
- round : 1
switch : ["故事退出分支", "下一个分支"]
keywords : ["不想", "累了", "想", "不累"]
- [x] switchOnA :
- round : 1
switch : ["晚上分支"]
keywords : ["时间不早了"]
- [x] exitOnQ :
- round : 1
keywords : ["退出", "忘了吧", "重置", "无聊"]
- [x] exitOnA :
- round : 1
keywords : ["退出", "我是一个AI", "我是一个人工", "我是一个基于"]
- [x] envType : 0 # 0=不使用场景描述, 1=在本轮llm回复前发送场景描述, 2=在本轮llm回复后发送场景描述, 场景描述支持[image:xxx][pic:xxx][图片:xxx][背景:xxx]标签, xxx为相对或绝对路径, 需在exe运行目录下
- [x] envPics : [] # 现阶段ai速度太慢,人工指定,数组代表多个,每个数组成员以1: 2: 开始代表对应第几轮.
- [x] envContents : [] # 如果要跳过某个轮次,直接指定文字是2: 图片也是2: 代表本轮文图是空的.
- [x] promptChanceQ :
- probability : 50
text : "让我们休息一下"
- probability : 30
text : "继续前进"
- probability : 70
text : "停下来看看周围"
- probability : 10
text : "尝试一些新东西"
위의 매개변수는 모두 다중 구성 파일의 설정 섹션에 있습니다. 각 장면에 대한 프롬프트 단어의 길이와 각 장면의 프롬프트 MarksLength 길이를 결정하여 플롯의 세분성을 제어할 수 있습니다.
스토리 모드 트리거 방법 1, 미들웨어 제어, /gensokyo 포트 자체 호출 및 다른 프롬프트 매개변수 첨부, 수동 차단
gsk-llm에서 ob11 로봇 프레임워크의 http api 주소를 설정합니다. ob11 플러그인 애플리케이션은 메시지 내용을 기반으로 조건부 판단만 수행하므로 개발자에게 다음과 같은 자유를 제공합니다. 조건 자체를 제어합니다.
두 번째 스토리 모드 실행 방법은 기본 구성 파일 config.yml에 switchOnQ, switchOnA를 구성하여 키워드 기반으로 자동으로 브랜치를 전환하는 것입니다.
스토리를 진행하기 위해 프롬프트 매개변수의 구성 파일 기능과 결합하여 프롬프트 단어에 초점을 맞춘 기본 AI 스토리라인을 실현할 수 있습니다. 또한 각 프롬프트.yml에 대해 해당 -keyboard.yml을 설계해야 합니다. 거품을 생성합니다.
PromptMarks의 키워드는 []입니다. 이는 프롬프트 단어 파일을 전환하려면 PromptMarksLength를 누르는 것을 의미합니다. PromptMarksLength는 이 프롬프트 단어 파일에 의해 유지되는 컨텍스트 길이를 나타냅니다.
PromptMarksLength가 0보다 작으면 PromptMarks에서 후속 분기를 읽고 PromptMarkType=1인 경우 무작위로 전환합니다.
1=조건에 따라 트리거되며, PromptMarksLength에 도달할 때도 트리거됩니다.
구성 세부정보는 프로세스 제어-promptmarks.md를 참조하세요.
이 분기는 사용자와 모델이 표시를 말할 때 트리거됩니다. (llm이 조건에 따라 말할 수 있도록 프롬프트 단어를 직접 작성해야 합니다.)
현재 스토리 조각의 시스템 프롬프트 단어와 QA를 사용하여 AI가 동의한 전환 단어를 출력하도록 안내할 수 있습니다. 이를 통해 각 대상 분기에 대한 여러 트리거 단어의 설계를 실현하여 대형 모델이 개발을 결정할 수 있습니다. 이야기의 방향은 그 자체다.
EnhancedQA가 false인 경우 구성 파일에 미리 정의된 QA가 llm 메모리에 존재하는 사용자 QA 맨 위에 추가되어(전체 대화 방향에 영향을 주지 않음) 약한 영향을 미칩니다.
EnhancedQA가 true인 경우 구성 파일에 미리 정의된 QA의 위치를 위에서 아래로 사용자의 현재 대화 앞쪽으로 이동해 보려고 했으나 효과가 이상적이지 않았으며,
현재는 현재 사용자의 과거 QA와 혼합, 통합되어 사용자 입력을 어느 정도 안내함으로써 스토리 진행 방향에 영향을 미칠 예정입니다.
ai-agent보다 유연성은 떨어지지만 플롯 제어 가능성이 높고 생성 속도가 낮으며 비용이 저렴한 방법인 "구성 제어 흐름" 매개변수가 도입되었습니다.
PromptChoicesQ 및 PromptChoicesA 문서: 프로세스 제어-promptchoicesQ 프로세스 제어-promptCoverQ 프로세스 제어-promptChanceQ
switchOnQ는 Q에서 일치하는 텍스트가 발견되면 현재 분기를 전환한다는 의미입니다. switchOnA도 마찬가지이며 구성 방법은 프롬프트초이스와 동일합니다.
공정 제어 스위치ONQA
exitOnQ는 지정된 키워드가 감지되면 현재 분기가 종료됨을 의미합니다. 프로세스 제어 종료QA
PromptMarks, switchOnQ 및 switchOnA는 모두 키워드를 기반으로 분기로 이동합니다. 라운드 또는 QA에 관계없이 PromptMarks가 먼저 실행됩니다. switchOnQ 및 switchOnA는 Q와 A를 구별하고 라운드를 구별하며 세부 사항을 지정합니다. 도약.
전환할 필요가 없는 고정 분기가 있는 경우 yml의 프롬프트MarksLength를 99999로 설정하세요.
프롬프트마크 길이: 99999
이는 존재하지 않는 분기로 실수로 전환하여 세션 오류가 발생하는 것을 방지하기 위한 것입니다.
구성 제어 흐름은 간단하고 직관적입니다. 구성 파일은 구성 파일을 통해 관리됩니다. 플롯 작성자와 같은 비기술 인력도 구성 파일 규칙을 직접 학습하고 구성 파일을 수정할 수 있습니다. 프로그래밍 지식 없이 대화 논리를 업데이트합니다.
높은 플롯 확실성: 동일한 입력 및 구성이 주어지면 플롯 방향이 일반적으로 일관됩니다. 이는 대화 플롯의 일관성과 예측 가능성을 보장하는 데 매우 중요합니다.
비용이 저렴하고, 여러 AI가 동시에 처리하는 대신 컨텍스트를 교묘하게 결합하고 대체하므로 일반 대화와 거의 동일한 양의 토큰을 소비하므로 비용이 절약됩니다.
속도가 빠르고 일반적인 대화 QA와 같은 결과를 생성하며 게임 스크립트와 같은 플롯을 작성합니다.
개인 개발자와 소규모 개발팀에 적합한 저비용 AI 스토리와 참신한 솔루션. 저비용, 고속, 높은 제어 가능성은 모델 개선과 즉각적인 단어 효과로 직접적으로 향상됩니다.
대화 플롯 채팅 시나리오의 경우 플롯이 상대적으로 고정되어 있고 대화 경로가 미리 설정되어 있으며 업데이트 빈도가 높지 않은 경우 구성 제어 흐름을 사용하는 것이 더 적합합니다. 높은 수준의 제어 가능성과 사용하기 쉬운 기능을 제공하기 때문입니다. -관리방법을 이해한다.
대화 시스템이 높은 수준의 상호작용성과 개인화를 요구하거나 플롯 변경이 복잡하고 사용자의 특정 피드백과 행동에 따라 동적으로 조정되어야 하는 경우 AI 기반 에이전트 솔루션을 사용하는 것이 더 적절할 수 있습니다. 더 높은 기술 투자와 유지 관리 비용이 필요합니다.
이 섹션에서는 API와 통신하기 위한 특정 엔드포인트 정보를 설명합니다.
재산 | 세부 |
---|---|
URL | http://localhost:46230/conversation |
방법 | POST |
클라이언트가 서버에 보내야 하는 요청 본문은 JSON 형식이어야 합니다. 다음 표에는 각 필드의 데이터 유형과 설명이 자세히 나와 있습니다.
필드 이름 | 유형 | 설명하다 |
---|---|---|
message | 끈 | 사용자가 보낸 메시지의 내용 |
conversationId | 끈 | 현재 대화 세션의 고유 식별자 |
parentMessageId | 끈 | 이 메시지와 관련된 이전 메시지의 식별자 |
다음 JSON 객체는 이 API 엔드포인트에 요청을 보낼 때 요청 본문의 구조를 보여줍니다.
{
"message" : "我第一句话说的什么" ,
"conversationId" : " 07710821-ad06-408c-ba60-1a69bf3ca92a " ,
"parentMessageId" : " 73b144d2-a41f-4aeb-b3bb-8624f0e54ba6 "
}
이 예에서는 메시지 콘텐츠, 현재 대화 세션의 고유 식별자 및 이전 메시지의 식별자를 포함하는 요청 본문을 구성하는 방법을 보여줍니다. 이 형식을 사용하면 요청된 데이터가 서버의 처리 규칙을 준수할 뿐만 아니라 대화 컨텍스트의 연속성을 쉽게 유지할 수 있습니다.
성공적인 응답은 상태 코드 200
과 다음 필드가 포함된 JSON 개체를 반환합니다.
필드 이름 | 유형 | 설명하다 |
---|---|---|
response | 끈 | 인터페이스의 응답 메시지 내용 |
conversationId | 끈 | 현재 대화의 고유 식별자 |
messageId | 끈 | 현재 메시지의 고유 식별자 |
details | 물체 | 추가 사용량 세부정보 포함 |
usage | 객체( details ) | 토큰 개수 등 사용 세부정보 |
{
"response" : "回答内容" ,
"conversationId" : " c9b8746d-aa8c-44b3-804a-bb5ad27f5b84 " ,
"messageId" : " 36cc9422-da58-47ec-a25e-e8b8eceb47f5 " ,
"details" : {
"usage" : {
"prompt_tokens" : 88 ,
"completion_tokens" : 2
}
}
}
다양한 아키텍처에서 실행할 수 있습니다(기본 Android는 아직 지원되지 않으며 sqlitev3에는 cgo가 필요함). cgo 컴파일은 복잡하거나 arm 플랫폼 또는 기타 아키텍처이므로 해당 시스템 아키텍처에서 로컬로 컴파일해 볼 수 있습니다.
API 메소드는 직접 액세스를 위해 QQ 채널을 호출합니다.
감사자 요청 매개변수
감사자로서 다른 GSK LLM에 요청을 보내야 하는 경우 반환되어야 하는 JSON 형식은 다음과 같습니다.
{ "result" : %s }
여기서 %s
특정 부동 소수점 값으로 대체될 자리 표시자를 나타냅니다.
버블 생성 요청 결과
버블 생성을 위해 다른 GSK LLM을 요청할 때 반환되어야 하는 JSON 형식은 다음과 같습니다.
[ " " , " " , " " ]
이는 버블 생성의 결과가 세 개의 문자열을 포함하는 배열임을 의미합니다. 이 형식은 결과를 반환할 때 또는 3보다 작거나 같을 때 세 가지 다른 거품을 지정하는 데 사용됩니다.
더 이상 에이전트와 유사한 기능을 구현하기 위해 여러 개의 gsk-llm을 열 필요가 없습니다. 새로운 다중 구성 적용 범위, 프롬프트 매개변수 및 Lotus 기능을 기반으로 버블 생성 및 스토리 진행과 같은 복잡한 기능 구현을 직접 요청할 수 있습니다.
GetAIPromptkeyboardPath는 자체 주소이거나 프롬프트 매개변수를 가질 수 있습니다.
미들웨어를 사용하여 프롬프트 매개변수를 지정하는 경우 구성은 프롬프트 폴더에 있으며 해당 형식은 xxx-keyboard.yml입니다. 미들웨어를 사용하지 않는 경우 경로에 프롬프트 매개변수를 지정하고 해당 xxx.yml을 프롬프트에 배치하세요. 폴더.)
시스템 프롬프트 단어의 gsk-llm 공동 작업의 /conversation 주소를 설정합니다. 시스템 프롬프트 단어가 텍스트 json 배열을 반환해야 한다는 데 동의합니다(3).
이 프로젝트는 다음과 같은 잘 알려진 프로젝트의 아이디어를 참조하고 단순화된 AI 텍스트 제어 흐름 구성 형식을 구현합니다.
라사
꼬기
잉크라이터