Enha: add openrouter parser
This commit is contained in:
		
							
								
								
									
										86
									
								
								llmapi/models.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								llmapi/models.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,86 @@ | ||||
| package llmapi | ||||
|  | ||||
| import ( | ||||
| 	"gralias/config" | ||||
| 	"log/slog" | ||||
| ) | ||||
|  | ||||
| type OpenRouterResp struct { | ||||
| 	ID       string `json:"id"` | ||||
| 	Provider string `json:"provider"` | ||||
| 	Model    string `json:"model"` | ||||
| 	Object   string `json:"object"` | ||||
| 	Created  int    `json:"created"` | ||||
| 	Choices  []struct { | ||||
| 		Logprobs           any    `json:"logprobs"` | ||||
| 		FinishReason       string `json:"finish_reason"` | ||||
| 		NativeFinishReason string `json:"native_finish_reason"` | ||||
| 		Index              int    `json:"index"` | ||||
| 		Message            struct { | ||||
| 			Role      string `json:"role"` | ||||
| 			Content   string `json:"content"` | ||||
| 			Refusal   any    `json:"refusal"` | ||||
| 			Reasoning any    `json:"reasoning"` | ||||
| 		} `json:"message"` | ||||
| 	} `json:"choices"` | ||||
| 	Usage struct { | ||||
| 		PromptTokens     int `json:"prompt_tokens"` | ||||
| 		CompletionTokens int `json:"completion_tokens"` | ||||
| 		TotalTokens      int `json:"total_tokens"` | ||||
| 	} `json:"usage"` | ||||
| } | ||||
|  | ||||
| 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 LLMResp struct { | ||||
| 	Index           int    `json:"index"` | ||||
| 	Content         string `json:"content"` | ||||
| 	Tokens          []any  `json:"tokens"` | ||||
| 	IDSlot          int    `json:"id_slot"` | ||||
| 	Stop            bool   `json:"stop"` | ||||
| 	Model           string `json:"model"` | ||||
| 	TokensPredicted int    `json:"tokens_predicted"` | ||||
| 	TokensEvaluated int    `json:"tokens_evaluated"` | ||||
| 	Prompt          string `json:"prompt"` | ||||
| 	HasNewLine      bool   `json:"has_new_line"` | ||||
| 	Truncated       bool   `json:"truncated"` | ||||
| 	StopType        string `json:"stop_type"` | ||||
| 	StoppingWord    string `json:"stopping_word"` | ||||
| 	TokensCached    int    `json:"tokens_cached"` | ||||
| } | ||||
|  | ||||
| type MimeResp struct { | ||||
| 	Clue   string   `json:"clue"` | ||||
| 	Number string   `json:"number"` | ||||
| 	Answer []string `json:"words_I_mean_my_team_to_open"` | ||||
| } | ||||
|  | ||||
| type GusserResp struct { | ||||
| 	Guesses []string `json:"guesses"` | ||||
| 	CouldBe []string `json:"could_be"` | ||||
| } | ||||
|  | ||||
| type Bot struct { | ||||
| 	Role      string         `json:"role"` | ||||
| 	Team      string         `json:"team"` | ||||
| 	cfg       *config.Config `json:"-"` | ||||
| 	RoomID    string         `json:"room_id"` // can we get a room from here? | ||||
| 	BotName   string         `json:"bot_name"` | ||||
| 	log       *slog.Logger   `json:"-"` | ||||
| 	LLMParser RespParser     `json:"-"` | ||||
| 	// channels for communicaton | ||||
| 	// channels are not serializable | ||||
| 	// SignalsCh chan bool | ||||
| 	// DoneCh    chan bool | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Grail Finder
					Grail Finder