Flowise [功能]增强Azure OpenAI集成 - Azure认知搜索构建块或类似组件

os8fio9y  于 6个月前  发布在  其他
关注(0)|答案(4)|浏览(85)

描述您希望添加的功能

在使用Azure OpenAI Chat LLM或Chat Model Step时,我缺少发送到端点的可选参数。例如,在这里使用Azure OpenAI和认知搜索:https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/use-your-data
当前构建块的限制主要有两个主题。

  • 自定义URL -> 具有认知搜索启用的ChatGPT部署具有不同的URL(https://{instance-name}.openai.azure.com/openai/deployments/{deployment-name}/extensions/chat/completions?api-version=2023-08-01-preview)/extensions/是此URL中的附加路径参数
  • 额外参数 -> 具有认知搜索启用的Azure ChatGPT完成端点具有额外的请求体参数。在这种情况下,我无法将"dataSource"属性添加到请求中,以便构建如下所示的请求体:
parameters = {
    "max_tokens": 500,
    "temperature": 0.5,
    "top_p": 0.3,
    "stream": False,
    "dataSources": [
        {
            "type": "AzureCognitiveSearch",
            "parameters": {
                "endpoint": search_endpoint,
                "key": search_admin_key,
                "indexName": index_name,
                "topNDocuments": 1,
                "queryType": "simple",
                #"intent": product,
                "semanticConfiguration": "default",
                "roleInformation": prompt,
                "inScope": True,
                "filter": f"search.ismatch('\"{product}\"','{AZURE_SEARCH_TITLE_COLUMN}')",
                "fieldsMapping": {
                    "contentField": AZURE_SEARCH_CONTENT_COLUMNS.split("|") if AZURE_SEARCH_CONTENT_COLUMNS else [],
                    "titleField": AZURE_SEARCH_TITLE_COLUMN if AZURE_SEARCH_TITLE_COLUMN else None,
                    "urlField": AZURE_SEARCH_URL_COLUMN if AZURE_SEARCH_URL_COLUMN else None,
                    "filepathField": AZURE_SEARCH_FILENAME_COLUMN if AZURE_SEARCH_FILENAME_COLUMN else None,
                    "vectorFields": AZURE_SEARCH_VECTOR_COLUMNS.split("|") if AZURE_SEARCH_VECTOR_COLUMNS else []}
            }
        }
    ],
    "messages": [
        {"role": "user", "content": f"{product} {string}"}
    ]
}

我认为只需添加如此处所述的覆盖URL的能力以及向Azure节点添加BaseOptions以通过"additional_kwargs"传递即可。至少这是我在langchain和flowise源代码中进行一些搜索后发现的所有内容。
期待您的回复!

4xrmg8kj

4xrmg8kj1#

Thought it would be an easy change, but seems more to it. Reason being we are using @openai npm package for Azure, and this does not have the extension chat capability, we need to switch to use @azure/openai for that

dwbf0jvd

dwbf0jvd2#

请在这里指出更多的指导,我很乐意提供支持,但我在这个领域(AI & LangChain)还是新手。
你所说的没有能力是什么意思?
正如您在测试中看到的,基本URL可以在OpenAIEndpointConfig中被覆盖,https://github.com/langchain-ai/langchainjs/blob/4e9e23137de8d2bc61dfbcf05e8e35a8f1e89ef5/langchain/src/util/tests/azure.test.ts#L49
我还没有完全理解客户端是如何构建的,但我想知道我们是否可以找到一种方法在这里进行钩子。

wz3gfoph

wz3gfoph3#

如果指定了Azure API密钥,baseUrl将不会被使用。相反,这将被用于${azureOpenAIBasePath}/${azureOpenAIApiDeploymentName} - https://github.com/langchain-ai/langchainjs/blob/4e9e23137de8d2bc61dfbcf05e8e35a8f1e89ef5/langchain/src/util/azure.ts#L45

fnx2tebb

fnx2tebb4#

好的,谢谢你指出来。看起来我找到了正确的方向。我尝试过在本地直接编辑node_modules,遇到了相同的问题。当我有时间的时候,我会深入研究一下。

相关问题