描述您希望添加的功能
在使用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源代码中进行一些搜索后发现的所有内容。
期待您的回复!
4条答案
按热度按时间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
dwbf0jvd2#
请在这里指出更多的指导,我很乐意提供支持,但我在这个领域(AI & LangChain)还是新手。
你所说的没有能力是什么意思?
正如您在测试中看到的,基本URL可以在OpenAIEndpointConfig中被覆盖,https://github.com/langchain-ai/langchainjs/blob/4e9e23137de8d2bc61dfbcf05e8e35a8f1e89ef5/langchain/src/util/tests/azure.test.ts#L49
我还没有完全理解客户端是如何构建的,但我想知道我们是否可以找到一种方法在这里进行钩子。
wz3gfoph3#
如果指定了Azure API密钥,
baseUrl
将不会被使用。相反,这将被用于${azureOpenAIBasePath}/${azureOpenAIApiDeploymentName}
- https://github.com/langchain-ai/langchainjs/blob/4e9e23137de8d2bc61dfbcf05e8e35a8f1e89ef5/langchain/src/util/azure.ts#L45fnx2tebb4#
好的,谢谢你指出来。看起来我找到了正确的方向。我尝试过在本地直接编辑node_modules,遇到了相同的问题。当我有时间的时候,我会深入研究一下。