我已经将我的开放人工智能服务放在Azure API管理网关后面,所以如果客户端必须访问开放人工智能,他们必须使用网关URL。假设网关URL是
[email protected]
。在网关将请求转发到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生成嵌入,因为我能够
在请求中添加Authorization Header。我希望对以下代码也这样做。
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。
有人有做类似事情的经验吗?