-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add perplexity prompter #327
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎ 2 Skipped Deployments
|
Caution Review failedThe pull request is closed. 📝 WalkthroughWalkthroughThe pull request introduces significant changes to the Semdex service's asker functionality. A new configuration structure is established with additional fields for asker provider and Perplexity API key. The asker implementation has been refactored to support multiple providers, with a default implementation and a new Perplexity-specific asker. The changes enable more flexible question-answering capabilities by allowing different AI providers to be used dynamically based on configuration. Changes
Sequence DiagramsequenceDiagram
participant User
participant Asker
participant Searcher
participant AIProvider
User->>Asker: Ask query
Asker->>Searcher: Retrieve context
Searcher-->>Asker: Return search results
Asker->>AIProvider: Send augmented prompt
AIProvider-->>Asker: Stream response
Asker-->>User: Deliver answer
Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (5)
Finishing Touches
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🧹 Nitpick comments (2)
internal/infrastructure/ai/perplexity.go (2)
19-21
: Correct the typo for the timeout constant name.
It appears there is a typographical error: "DefautTimeout" should be "DefaultTimeout" for clarity and consistency.- DefautTimeout = 10 * time.Second + DefaultTimeout = 10 * time.Second
73-82
: Consider making the API key field configurable for Perplexity.
Currently, it uses cfg.OpenAIKey. If this key is specific to Perplexity, rename it to reflect "PerplexityKey" in the config for improved clarity and maintainability. Otherwise, ensure that using cfg.OpenAIKey is intentional.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (2)
go.mod
is excluded by!**/*.mod
go.sum
is excluded by!**/*.sum
,!**/*.sum
📒 Files selected for processing (2)
internal/infrastructure/ai/ai.go
(1 hunks)internal/infrastructure/ai/perplexity.go
(1 hunks)
🔇 Additional comments (2)
internal/infrastructure/ai/perplexity.go (1)
136-177
: Revisit unsubscribing logic in streaming callback.
In lines 145, 151, and 166, the subscription is managed multiple times (subscribe once and unsubscribe twice). Make sure that unsubscribing more than once doesn't produce undefined behavior or race conditions.
internal/infrastructure/ai/ai.go (1)
24-26
: Implement configuration checks for Perplexity initialization.
Ensure that all relevant Perplexity configuration fields (endpoint, key, model) are validated. Otherwise, the function may succeed with incorrect configuration.
c5c614e
to
31d5838
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (4)
internal/infrastructure/ai/perplexity.go (3)
18-18
: Typographical error: "DefautTimeout" → "DefaultTimeout"
Consider correcting this constant name for clarity and consistency.- DefautTimeout = 10 * time.Second + DefaultTimeout = 10 * time.Second
72-81
: Validate API key presence
Ifcfg.PerplexityAPIKey
is empty, subsequent API calls will fail. Consider returning an error early to avoid silently configured instances.func newPerplexity(cfg config.Config) (*Perplexity, error) { if cfg.PerplexityAPIKey == "" { + return nil, fmt.Errorf("Perplexity API key is missing") } s := &Perplexity{ ... } return s, nil }
78-78
: Use renamed constant
After renamingDefautTimeout
, ensure that references are updated accordingly.- httpTimeout: DefautTimeout, + httpTimeout: DefaultTimeout,internal/config/config.go (1)
53-53
: Secure API key handling
Use a secrets manager or environment variable best practices to avoid accidental logging or exposure ofPerplexityAPIKey
.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (2)
go.mod
is excluded by!**/*.mod
go.sum
is excluded by!**/*.sum
,!**/*.sum
📒 Files selected for processing (3)
internal/config/config.go
(1 hunks)internal/infrastructure/ai/ai.go
(1 hunks)internal/infrastructure/ai/perplexity.go
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- internal/infrastructure/ai/ai.go
🔇 Additional comments (3)
internal/infrastructure/ai/perplexity.go (3)
130-132
: Validate r.Choices
length before usage
Accessing r.Choices[0]
might cause an out-of-range error if len(r.Choices)
is zero.
return &Result{
- Answer: r.Choices[0].Message.Content,
+ Answer: func() string {
+ if len(r.Choices) > 0 {
+ return r.Choices[0].Message.Content
+ }
+ return ""
+ }(),
}, nil
206-208
: Avoid panic in placeholder method
Return an error or a stub instead of calling panic("not implemented")
.
func (o *Perplexity) EmbeddingFunc() func(ctx context.Context, text string) ([]float32, error) {
- panic("not implemented")
+ return func(ctx context.Context, text string) ([]float32, error) {
+ return nil, fmt.Errorf("embedding not implemented yet")
+ }
}
187-191
:
Guard against empty Choices during streaming
If len(cr.Choices)
is zero, accessing cr.Choices[0].Delta.Content
or cr.Choices[0].FinishReason
will cause an out-of-range error.
- outch <- cr.Choices[0].Delta.Content
-
- if cr.Choices[0].FinishReason == "stop" {
- break
- }
+ if len(cr.Choices) > 0 {
+ outch <- cr.Choices[0].Delta.Content
+ if cr.Choices[0].FinishReason == "stop" {
+ break
+ }
+ }
Likely invalid or redundant comment.
31d5838
to
565c6f3
Compare
No description provided.