forked from danny-avila/LibreChat
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Updated: Azure Cognitive Search Plugin/ Free AI APIs 🔎 (danny-avila#1230
) * Update azure_cognitive_search.md * Updated: Azure Cognitive Search Plugin to Azure AI Search Plugin. Update Docs: Azure Cognitive Search Plugin to Azure AI Search Plugin. Updated:.env.example Azure Cognitive Search to Azure AI Search Updated: mkdocs.yml link Updated: SDK Azure 11.3.2 to 12.0.0 * fix:.env AZURE- to AZURE_ * Update azure_ai_search.md * Updated:(api/package.json, package-lock.json): updated for new version the plugin (@azure/search-documents) * fix:Resolved incorrect file name AzureAISearch * fix:.env Azure AI Search * fix:"-" to "_" * Update Docs: Azure AI Search ith an improved tutorial featuring images and easier-to-understand instructions fix: Change name of plugin "Azure Ai Search" to "Azure AI Search" i * Update:Version of REST API versions (Azure AI Search) * Update azure_ai_search.md * Update azure_ai_search.md * Update azure_ai_search.md * fix: docs Azure AI Seach Images were not appearing. * fix:Updated to the new repository with working APIs * Update: Added Compatibility for Previous Environment Variable Names in AzureAISearch Plugin * Update: Added Compatibility for Previous Environment Variable Names in AzureAISearch Plugin * Update: Added Compatibility for Previous Environment Variable Names in AzureAISearch Plugin * Update: Added Compatibility for Previous Environment Variable Names in AzureAISearch Plugin * Update: o AzureAiSearch.js * Atualizar o AzureAISearch.js * Update/fix:EnvironmentVariablesForDeprecation * fix:The file is outdated and needs to be updated. * fix:The file is outdated and needs to be updated. * update: translation portuguese brazilian * Refactor:Improve Readability and Cleanliness of AzureAISearch Class * Update AzureAiSearch.js * Update AzureAISearch.js
- Loading branch information
Showing
15 changed files
with
316 additions
and
333 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
const { Tool } = require('langchain/tools'); | ||
const { SearchClient, AzureKeyCredential } = require('@azure/search-documents'); | ||
|
||
class AzureAISearch extends Tool { | ||
static DEFAULT_API_VERSION = '2023-11-01'; | ||
static DEFAULT_QUERY_TYPE = 'simple'; | ||
static DEFAULT_TOP = 5; | ||
|
||
constructor(fields = {}) { | ||
super(); | ||
this.initializeProperties(fields); | ||
this.initializeClient(); | ||
} | ||
|
||
initializeProperties(fields) { | ||
const getValue = (fieldNames, defaultValue) => { | ||
for (const name of fieldNames) { | ||
const value = fields[name] || process.env[name]; | ||
if (value !== undefined && value !== null) return value; | ||
} | ||
return defaultValue; | ||
}; | ||
|
||
this.serviceEndpoint = getValue(['AZURE_AI_SEARCH_SERVICE_ENDPOINT', 'AZURE_COGNITIVE_SEARCH_SERVICE_ENDPOINT'], this.getServiceEndpoint()); | ||
this.indexName = getValue(['AZURE_AI_SEARCH_INDEX_NAME', 'AZURE_COGNITIVE_SEARCH_INDEX_NAME'], this.getIndexName()); | ||
this.apiKey = getValue(['AZURE_AI_SEARCH_API_KEY', 'AZURE_COGNITIVE_SEARCH_API_KEY'], this.getApiKey()); | ||
this.apiVersion = getValue(['AZURE_AI_SEARCH_API_VERSION', 'AZURE_COGNITIVE_SEARCH_API_VERSION'], AzureAISearch.DEFAULT_API_VERSION); | ||
this.queryType = getValue(['AZURE_AI_SEARCH_SEARCH_OPTION_QUERY_TYPE', 'AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_QUERY_TYPE'], AzureAISearch.DEFAULT_QUERY_TYPE); | ||
this.top = getValue(['AZURE_AI_SEARCH_SEARCH_OPTION_TOP', 'AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_TOP'], AzureAISearch.DEFAULT_TOP); | ||
this.select = this.getSelect(); | ||
} | ||
|
||
initializeClient() { | ||
this.client = new SearchClient(this.serviceEndpoint, this.indexName, new AzureKeyCredential(this.apiKey), { apiVersion: this.apiVersion }); | ||
} | ||
|
||
name = 'azure-ai-search'; | ||
|
||
description = | ||
'Use the \'azure-ai-search\' tool to retrieve search results relevant to your input'; | ||
|
||
async _call(query) { | ||
try { | ||
const searchOptions = { | ||
queryType: this.queryType, | ||
top: this.top, | ||
select: this.select | ||
}; | ||
|
||
const searchResults = await this.client.search(query, searchOptions); | ||
return JSON.stringify(searchResults.results.map(result => result.document)); | ||
} catch (error) { | ||
console.error(`Azure AI Search request failed: ${error}`); | ||
return 'There was an error with Azure AI Search.'; | ||
} | ||
} | ||
} | ||
|
||
module.exports = AzureAISearch; |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
const { StructuredTool } = require('langchain/tools'); | ||
const { z } = require('zod'); | ||
const { SearchClient, AzureKeyCredential } = require('@azure/search-documents'); | ||
|
||
class AzureAISearch extends StructuredTool { | ||
static DEFAULT_API_VERSION = '2023-11-01'; | ||
static DEFAULT_QUERY_TYPE = 'simple'; | ||
static DEFAULT_TOP = 5; | ||
|
||
constructor(fields = {}) { | ||
super(); | ||
this.initializeProperties(fields); | ||
this.initializeClient(); | ||
this.initializeSchema(); | ||
} | ||
|
||
initializeProperties(fields) { | ||
const getValue = (fieldNames, defaultValue) => { | ||
for (const name of fieldNames) { | ||
const value = fields[name] || process.env[name]; | ||
if (value !== undefined && value !== null) return value; | ||
} | ||
return defaultValue; | ||
}; | ||
|
||
this.serviceEndpoint = getValue(['AZURE_AI_SEARCH_SERVICE_ENDPOINT', 'AZURE_COGNITIVE_SEARCH_SERVICE_ENDPOINT'], this.getServiceEndpoint()); | ||
this.indexName = getValue(['AZURE_AI_SEARCH_INDEX_NAME', 'AZURE_COGNITIVE_SEARCH_INDEX_NAME'], this.getIndexName()); | ||
this.apiKey = getValue(['AZURE_AI_SEARCH_API_KEY', 'AZURE_COGNITIVE_SEARCH_API_KEY'], this.getApiKey()); | ||
this.apiVersion = getValue(['AZURE_AI_SEARCH_API_VERSION', 'AZURE_COGNITIVE_SEARCH_API_VERSION'], AzureAISearch.DEFAULT_API_VERSION); | ||
this.queryType = getValue(['AZURE_AI_SEARCH_SEARCH_OPTION_QUERY_TYPE', 'AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_QUERY_TYPE'], AzureAISearch.DEFAULT_QUERY_TYPE); | ||
this.top = getValue(['AZURE_AI_SEARCH_SEARCH_OPTION_TOP', 'AZURE_COGNITIVE_SEARCH_SEARCH_OPTION_TOP'], AzureAISearch.DEFAULT_TOP); | ||
this.select = this.getSelect(); | ||
} | ||
|
||
initializeClient() { | ||
this.client = new SearchClient(this.serviceEndpoint, this.indexName, new AzureKeyCredential(this.apiKey), { apiVersion: this.apiVersion }); | ||
} | ||
|
||
initializeSchema() { | ||
this.schema = z.object({ | ||
query: z.string().describe('Search word or phrase to Azure AI Search'), | ||
}); | ||
} | ||
|
||
name = 'azure-ai-search'; | ||
|
||
description = | ||
'Use the \'azure-ai-search\' tool to retrieve search results relevant to your input'; | ||
|
||
async _call(data) { | ||
const { query } = data; | ||
try { | ||
const searchOptions = { | ||
queryType: this.queryType, | ||
top: this.top, | ||
select: this.select | ||
}; | ||
|
||
const searchResults = await this.client.search(query, searchOptions); | ||
return JSON.stringify(searchResults.results.map(result => result.document)); | ||
} catch (error) { | ||
console.error(`Azure AI Search request failed: ${error}`); | ||
return 'There was an error with Azure AI Search.'; | ||
} | ||
} | ||
} | ||
|
||
module.exports = AzureAISearch; |
Oops, something went wrong.