Fix: deepseek mime clue
This commit is contained in:
		| @@ -1,6 +1,7 @@ | |||||||
| package config | package config | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|  | 	"fmt" | ||||||
| 	"log/slog" | 	"log/slog" | ||||||
|  |  | ||||||
| 	"github.com/BurntSushi/toml" | 	"github.com/BurntSushi/toml" | ||||||
| @@ -38,6 +39,6 @@ func LoadConfigOrDefault(fn string) *Config { | |||||||
| 		config.ServerConfig.Host = "localhost" | 		config.ServerConfig.Host = "localhost" | ||||||
| 		config.ServerConfig.Port = "3000" | 		config.ServerConfig.Port = "3000" | ||||||
| 	} | 	} | ||||||
| 	// fmt.Printf("config debug; config.LLMConfig.URL: %s\n", config.LLMConfig.URL) | 	fmt.Printf("config debug; config.LLMConfig.URL: %s\n", config.LLMConfig.URL) | ||||||
| 	return config | 	return config | ||||||
| } | } | ||||||
|   | |||||||
| @@ -32,6 +32,19 @@ var ( | |||||||
| 	// notifier = | 	// notifier = | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | type DSResp struct { | ||||||
|  | 	ID      string `json:"id"` | ||||||
|  | 	Choices []struct { | ||||||
|  | 		Text         string `json:"text"` | ||||||
|  | 		Index        int    `json:"index"` | ||||||
|  | 		FinishReason string `json:"finish_reason"` | ||||||
|  | 	} `json:"choices"` | ||||||
|  | 	Created           int    `json:"created"` | ||||||
|  | 	Model             string `json:"model"` | ||||||
|  | 	SystemFingerprint string `json:"system_fingerprint"` | ||||||
|  | 	Object            string `json:"object"` | ||||||
|  | } | ||||||
|  |  | ||||||
| type MimeResp struct { | type MimeResp struct { | ||||||
| 	Clue   string   `json:"clue"` | 	Clue   string   `json:"clue"` | ||||||
| 	Number string   `json:"number"` | 	Number string   `json:"number"` | ||||||
| @@ -77,18 +90,46 @@ func (b *Bot) StartBot() { | |||||||
| 				b.log.Error("bot loop", "error", err) | 				b.log.Error("bot loop", "error", err) | ||||||
| 				return | 				return | ||||||
| 			} | 			} | ||||||
|  | 			dsResp := DSResp{} | ||||||
|  | 			if err := json.Unmarshal(llmResp, &dsResp); err != nil { | ||||||
|  | 				b.log.Error("failed to unmarshall", "error", err) | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			if len(dsResp.Choices) == 0 { | ||||||
|  | 				b.log.Error("empty choices", "dsResp", dsResp) | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			text := dsResp.Choices[0].Text | ||||||
|  | 			li := strings.Index(text, "{") | ||||||
|  | 			ri := strings.LastIndex(text, "}") | ||||||
|  | 			if li < 0 || ri < 1 { | ||||||
|  | 				b.log.Error("not a json", "msg", text) | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			sj := text[li : ri+1] | ||||||
|  | 			// jb, err := json.Marshal(sj) | ||||||
|  | 			// if err != nil { | ||||||
|  | 			// 	b.log.Error("failed to marshal", "error", err, "string-json", sj) | ||||||
|  | 			// 	return | ||||||
|  | 			// } | ||||||
| 			// parse response | 			// parse response | ||||||
| 			// if mime -> give clue | 			// if mime -> give clue | ||||||
| 			// if guesser -> open card (does opening one card prompting new loop?) | 			// if guesser -> open card (does opening one card prompting new loop?) | ||||||
| 			// send notification to sse broker | 			// send notification to sse broker | ||||||
|  | 			eventName := models.NotifyBacklogPrefix + room.ID | ||||||
|  | 			eventPayload := "" | ||||||
|  | 			tempMap := make(map[string]any) | ||||||
| 			switch b.Role { | 			switch b.Role { | ||||||
| 			case models.UserRoleMime: | 			case models.UserRoleMime: | ||||||
| 				// respMap := make(map[string]any) | 				// respMap := make(map[string]any) | ||||||
| 				mimeResp := MimeResp{} | 				mimeResp := MimeResp{} | ||||||
| 				if err := json.Unmarshal(llmResp, &mimeResp); err != nil { | 				if err := json.Unmarshal([]byte(sj), &tempMap); err != nil { | ||||||
| 					b.log.Error("failed to unmarshal mime resp", "error", err) | 					b.log.Error("failed to unmarshal mime resp", "error", err, "string-json", sj) | ||||||
| 					return | 					return | ||||||
| 				} | 				} | ||||||
|  | 				b.log.Info("mime resp log", "mimeResp", tempMap) | ||||||
|  | 				mimeResp.Clue = tempMap["clue"].(string) | ||||||
|  | 				mimeResp.Number = tempMap["number"].(string) | ||||||
| 				action := models.Action{ | 				action := models.Action{ | ||||||
| 					Actor:      b.BotName, | 					Actor:      b.BotName, | ||||||
| 					ActorColor: b.Team, | 					ActorColor: b.Team, | ||||||
| @@ -99,20 +140,26 @@ func (b *Bot) StartBot() { | |||||||
| 				} | 				} | ||||||
| 				room.ActionHistory = append(room.ActionHistory, action) | 				room.ActionHistory = append(room.ActionHistory, action) | ||||||
| 				room.MimeDone = true | 				room.MimeDone = true | ||||||
| 				// notify(models.NotifyBacklogPrefix+room.ID, clue+num) | 				eventPayload = mimeResp.Clue + mimeResp.Number | ||||||
| 			case models.UserRoleGuesser: | 			case models.UserRoleGuesser: | ||||||
| 				gr := GusserResp{} | 				gr := GusserResp{} | ||||||
| 				if err := json.Unmarshal(llmResp, &gr); err != nil { | 				if err := json.Unmarshal([]byte(sj), &gr); err != nil { | ||||||
| 					b.log.Error("failed to unmarshal guesser resp", "error", err) | 					b.log.Error("failed to unmarshal guesser resp", "error", err) | ||||||
| 					return | 					return | ||||||
| 				} | 				} | ||||||
|  | 				b.log.Info("mime resp log", "guesserResp", gr) | ||||||
| 			default: | 			default: | ||||||
| 				b.log.Error("unexpected role", "role", b.Role) | 				b.log.Error("unexpected role", "role", b.Role, "llmResp", sj) | ||||||
|  | 				return | ||||||
|  | 			} | ||||||
|  | 			// save room | ||||||
|  | 			if err := saveRoom(room); err != nil { | ||||||
|  | 				b.log.Error("failed to save room", "error", err) | ||||||
| 				return | 				return | ||||||
| 			} | 			} | ||||||
| 			broker.Notifier.Notifier <- broker.NotificationEvent{ | 			broker.Notifier.Notifier <- broker.NotificationEvent{ | ||||||
| 				EventName: "", | 				EventName: eventName, | ||||||
| 				Payload:   "", | 				Payload:   eventPayload, | ||||||
| 			} | 			} | ||||||
| 		// update room info | 		// update room info | ||||||
| 		case <-DoneChanMap[b.BotName]: | 		case <-DoneChanMap[b.BotName]: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Grail Finder
					Grail Finder