我已经将我的Open AI服务置于Azure API管理网关之后,因此,如果客户端必须访问Open AI服务,则必须使用网关URL。假设网关URL为**email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)**在网关将请求转发到OpenAI服务之前,它需要通过查看Authorization头来验证客户端。因此,来自客户端的请求应该包含Authorization Header。我能够使用openai官方python库实现,代码如下:
import openai
import logging
import os
os.environ["AZURE_OPENAI_API_TYPE"] = "azure"
os.environ["AZURE_OPENAI_API_KEY"] = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
os.environ["API_BASE"] = f"[email protected]"
os.environ["AZURE_OPENAI_API_VERSION"] = "2022-12-01"
os.environ["AZURE_OPENAI_EMBEDDING_DEPLOYMENT"] = "model-deployment-name"
def embed_documents(text):
logging.info("embed_documents [" + text + "]")
openai.api_type = os.getenv("AZURE_OPENAI_API_TYPE")
token = os.getenv("AZURE_OPENAI_API_KEY")
openai.api_key = token
openai.api_base = os.getenv("API_BASE")
openai.api_version = os.getenv("AZURE_OPENAI_API_VERSION")
AZURE_OPENAI_EMBEDDING_DEPLOYMENT = os.getenv("AZURE_OPENAI_EMBEDDING_DEPLOYMENT")
response = openai.Embedding.create(input=text,
engine=AZURE_OPENAI_EMBEDDING_DEPLOYMENT,
headers={
'Authorization': f'{token}'
}
)
logging.info("embed_documents complete")
embeddings = response['data'][0]['embedding']
print(embeddings)
return embeddings
if __name__ == "__main__":
embed_documents("MY first text")
字符串
在上面的代码片段中,我可以使用网关URL生成嵌入,因为我可以在请求中添加授权头。我希望对下面的代码做同样的事情。
import os
from langchain.chat_models import AzureChatOpenAI
from langchain.schema import HumanMessage
model = AzureChatOpenAI(
openai_api_base="https://openai003.openai.azure.com/",
openai_api_version="2023-05-15",
deployment_name="semantic-query-expansion",
openai_api_key="XXXXXXXXXXXXXXXXXXXXXXXXXX",
openai_api_type="azure",
)
model(
[
HumanMessage(
content="Translate this sentence from English to Bengali. I love programming."
)
]
)
型
请注意,上面的代码是从链接https://python.langchain.com/docs/integrations/chat/azure_chat_openai中提取的,当我直接点击azure openAI URL时,它可以正常工作,但是我没有找到任何方法来添加授权头,因此我无法使用网关URL。有人有类似的经验吗?
2条答案
按热度按时间lvjbypge1#
你可以使用连接到Azure APIM的LangChain。诀窍是使用不同的头来传递
api-key
字符串
ctrmrzij2#
将Azure API管理透明地置于Azure OpenAI之前的最佳方法是将订阅密钥从默认的
Ocp-Apim-Subscription-Key
更改为api-key
以匹配AOAI语法。您可以在API设置>订阅>头名称中配置APIM使用的头名称。
的数据