- Introduced a new search configuration structure, allowing for detailed settings for web, knowledge base, database, citation, and weights. - Updated the `Assistant` model to include a `Search` field, enabling assistant-specific search configurations. - Enhanced the loading and merging logic for search configurations, ensuring global defaults can be overridden by assistant-specific settings. - Added comprehensive tests for loading, saving, and updating assistants with search configurations, verifying the integrity of search settings. - Updated documentation in DESIGN.md to reflect the new search configuration hierarchy and usage, clarifying the interaction between global and assistant-level settings.
27 lines
566 B
Go
27 lines
566 B
Go
package search
|
|
|
|
import (
|
|
"fmt"
|
|
"sync/atomic"
|
|
)
|
|
|
|
// CitationGenerator generates unique citation IDs
|
|
type CitationGenerator struct {
|
|
counter uint64
|
|
}
|
|
|
|
// NewCitationGenerator creates a new citation generator
|
|
func NewCitationGenerator() *CitationGenerator {
|
|
return &CitationGenerator{}
|
|
}
|
|
|
|
// Next generates the next citation ID
|
|
func (g *CitationGenerator) Next() string {
|
|
n := atomic.AddUint64(&g.counter, 1)
|
|
return fmt.Sprintf("ref_%03d", n)
|
|
}
|
|
|
|
// Reset resets the counter (for testing)
|
|
func (g *CitationGenerator) Reset() {
|
|
atomic.StoreUint64(&g.counter, 0)
|
|
}
|