mirror of
				https://github.com/yangjian102621/geekai.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	fixed markdown generating styles
This commit is contained in:
		@@ -2,7 +2,8 @@
 | 
			
		||||
 | 
			
		||||
## v4.0.4
 | 
			
		||||
 | 
			
		||||
* Bug修复:修复统一千问第二句不回复的问题。
 | 
			
		||||
* Bug修复:修复统一千问第二句不回复的问题
 | 
			
		||||
* 功能新增:Dalle AI 绘画功能实现
 | 
			
		||||
 | 
			
		||||
## v4.0.3
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -74,6 +74,7 @@ func (h *MarkMapHandler) Client(c *gin.Context) {
 | 
			
		||||
			logger.Info("Receive a message: ", message.Content)
 | 
			
		||||
			err = h.sendMessage(client, utils.InterfaceToString(message.Content), modelId, userId)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				logger.Error(err)
 | 
			
		||||
				utils.ReplyChunkMessage(client, types.WsMessage{Type: types.WsErr, Content: err.Error()})
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
@@ -102,7 +103,7 @@ func (h *MarkMapHandler) sendMessage(client *types.WsClient, prompt string, mode
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	messages := make([]interface{}, 0)
 | 
			
		||||
	messages = append(messages, types.Message{Role: "system", Content: "你是一位非常优秀的思维导图助手,你会把用户的所有提问都总结成思维导图,然后以 Markdown 格式输出。只输出 Markdown 内容,不要输出任何解释性的语句。"})
 | 
			
		||||
	messages = append(messages, types.Message{Role: "system", Content: "你是一位非常优秀的思维导图助手,你会把用户的所有提问都总结成思维导图,然后以 Markdown 格式输出。不要输出任何解释性的语句。"})
 | 
			
		||||
	messages = append(messages, types.Message{Role: "user", Content: prompt})
 | 
			
		||||
	var req = types.ApiRequest{
 | 
			
		||||
		Model:    chatModel.Value,
 | 
			
		||||
 
 | 
			
		||||
@@ -53,7 +53,7 @@ func (s *Service) Run() {
 | 
			
		||||
 | 
			
		||||
		// translate prompt
 | 
			
		||||
		if utils.HasChinese(task.Prompt) {
 | 
			
		||||
			content, err := utils.OpenAIRequest(s.db, fmt.Sprintf(service.TranslatePromptTemplate, task.Prompt))
 | 
			
		||||
			content, err := utils.OpenAIRequest(s.db, fmt.Sprintf(service.RewritePromptTemplate, task.Prompt))
 | 
			
		||||
			if err == nil {
 | 
			
		||||
				task.Prompt = content
 | 
			
		||||
			} else {
 | 
			
		||||
@@ -62,7 +62,7 @@ func (s *Service) Run() {
 | 
			
		||||
		}
 | 
			
		||||
		// translate negative prompt
 | 
			
		||||
		if task.NegPrompt != "" && utils.HasChinese(task.NegPrompt) {
 | 
			
		||||
			content, err := utils.OpenAIRequest(s.db, fmt.Sprintf(service.TranslatePromptTemplate, task.NegPrompt))
 | 
			
		||||
			content, err := utils.OpenAIRequest(s.db, fmt.Sprintf(service.RewritePromptTemplate, task.NegPrompt))
 | 
			
		||||
			if err == nil {
 | 
			
		||||
				task.NegPrompt = content
 | 
			
		||||
			} else {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										16
									
								
								api/store/model/dalle_job.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								api/store/model/dalle_job.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
package model
 | 
			
		||||
 | 
			
		||||
import "time"
 | 
			
		||||
 | 
			
		||||
type DallJob struct {
 | 
			
		||||
	Id        uint `gorm:"primarykey;column:id"`
 | 
			
		||||
	UserId    int
 | 
			
		||||
	TaskId      string
 | 
			
		||||
	Prompt    string
 | 
			
		||||
	ImgURL       string
 | 
			
		||||
	Publish       bool
 | 
			
		||||
	Power      int
 | 
			
		||||
	Progress      int
 | 
			
		||||
	ErrMsg      string
 | 
			
		||||
	CreatedAt time.Time
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								api/store/vo/dalle_job.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								api/store/vo/dalle_job.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
package vo
 | 
			
		||||
 | 
			
		||||
type DallJob struct {
 | 
			
		||||
	Id        uint `json:"id"`
 | 
			
		||||
	UserId    int `json:"user_id"`
 | 
			
		||||
	TaskId      string `json:"task_id"`
 | 
			
		||||
	Prompt    string `json:"prompt"`
 | 
			
		||||
	ImgURL       string `json:"img_url"`
 | 
			
		||||
	Publish       bool `json:"publish"`
 | 
			
		||||
	Power      int `json:"power"`
 | 
			
		||||
	Progress      int `json:"progress"`
 | 
			
		||||
	ErrMsg      string `json:"err_msg"`
 | 
			
		||||
	CreatedAt int64 `json:"created_at"`
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1
									
								
								database/update-v4.0.4.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								database/update-v4.0.4.sql
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
CREATE TABLE `chatgpt_plus`.`chatgpt_dalle` ( `id` INT(11) NOT NULL AUTO_INCREMENT , `user_id` INT(11) NOT NULL COMMENT '用户ID' , `task_id` VARCHAR(20) NOT NULL COMMENT '任务ID' , `prompt` VARCHAR(2000) NOT NULL COMMENT '提示词' , `img_url` VARCHAR(255) NOT NULL COMMENT '图片地址' , `publish` TINYINT(1) NOT NULL COMMENT '是否发布' , `power` SMALLINT(3) NOT NULL COMMENT '消耗算力' , `progress` SMALLINT(3) NOT NULL COMMENT '任务进度' , `err_msg` VARCHAR(255) NOT NULL COMMENT '错误信息' , `created_at` DATETIME NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB COMMENT = 'DALLE 绘图任务表';
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								web/public/images/menu/dalle.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								web/public/images/menu/dalle.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 1.4 KiB  | 
@@ -112,6 +112,10 @@
 | 
			
		||||
          width 100%
 | 
			
		||||
          color #ffffff
 | 
			
		||||
          font-size 12px
 | 
			
		||||
 | 
			
		||||
          .markmap-foreign {
 | 
			
		||||
            //height 30px
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -102,14 +102,14 @@ const rightBoxHeight = ref(window.innerHeight - 85)
 | 
			
		||||
const prompt = ref("")
 | 
			
		||||
const text = ref(`# Geek-AI 助手
 | 
			
		||||
 | 
			
		||||
* 完整的开源系统,前端应用和后台管理系统皆可开箱即用。
 | 
			
		||||
* 基于 Websocket 实现,完美的打字机体验。
 | 
			
		||||
* 内置了各种预训练好的角色应用,轻松满足你的各种聊天和应用需求。
 | 
			
		||||
* 支持 OPenAI,Azure,文心一言,讯飞星火,清华 ChatGLM等多个大语言模型。
 | 
			
		||||
* 支持 MidJourney / Stable Diffusion AI 绘画集成,开箱即用。
 | 
			
		||||
* 支持使用个人微信二维码作为充值收费的支付渠道,无需企业支付通道。
 | 
			
		||||
* 已集成支付宝支付功能,微信支付,支持多种会员套餐和点卡购买功能。
 | 
			
		||||
* 集成插件 API 功能,可结合大语言模型的 function 功能开发各种强大的插件。
 | 
			
		||||
- 完整的开源系统,前端应用和后台管理系统皆可开箱即用。
 | 
			
		||||
- 基于 Websocket 实现,完美的打字机体验。
 | 
			
		||||
- 内置了各种预训练好的角色应用,轻松满足你的各种聊天和应用需求。
 | 
			
		||||
- 支持 OPenAI,Azure,文心一言,讯飞星火,清华 ChatGLM等多个大语言模型。
 | 
			
		||||
- 支持 MidJourney / Stable Diffusion AI 绘画集成,开箱即用。
 | 
			
		||||
- 支持使用个人微信二维码作为充值收费的支付渠道,无需企业支付通道。
 | 
			
		||||
- 已集成支付宝支付功能,微信支付,支持多种会员套餐和点卡购买功能。
 | 
			
		||||
- 集成插件 API 功能,可结合大语言模型的 function 功能开发各种强大的插件。
 | 
			
		||||
`)
 | 
			
		||||
const md = require('markdown-it')({breaks: true});
 | 
			
		||||
const content = ref(text.value)
 | 
			
		||||
@@ -170,6 +170,7 @@ const processContent = (text) => {
 | 
			
		||||
    if (line.indexOf("```") !== -1) {
 | 
			
		||||
      continue
 | 
			
		||||
    }
 | 
			
		||||
    line = line.replace(/([*_~`>])|(\d+\.)\s/g, '')
 | 
			
		||||
    arr.push(line)
 | 
			
		||||
  }
 | 
			
		||||
  return arr.join("\n")
 | 
			
		||||
@@ -240,6 +241,7 @@ const connect = (userId) => {
 | 
			
		||||
            break
 | 
			
		||||
          case "end":
 | 
			
		||||
            loading.value = false
 | 
			
		||||
            content.value = processContent(text.value)
 | 
			
		||||
            nextTick(() => update())
 | 
			
		||||
            break
 | 
			
		||||
          case "error":
 | 
			
		||||
@@ -266,6 +268,8 @@ const generate = () => {
 | 
			
		||||
 | 
			
		||||
// 使用 AI 智能生成
 | 
			
		||||
const generateAI = () => {
 | 
			
		||||
  html.value = ''
 | 
			
		||||
  text.value = ''
 | 
			
		||||
  if (prompt.value === '') {
 | 
			
		||||
    return ElMessage.error("请输入你的需求")
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user