From 039ae65a1e8869f033d1af69e4c061db2ebab44c Mon Sep 17 00:00:00 2001 From: Mark Ericksen Date: Sat, 14 Dec 2024 17:12:48 -0700 Subject: [PATCH] Azure test for ChatOpenAI usage --- .envrc_template | 4 +++- test/chat_models/chat_open_ai_test.exs | 31 ++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/.envrc_template b/.envrc_template index 44b46056..de05e69e 100644 --- a/.envrc_template +++ b/.envrc_template @@ -3,4 +3,6 @@ export OPENAI_ORG_ID="YOUR_OPENAI_ORG_ID" export ANTHROPIC_API_KEY="YOUR_ANTHROPIC_API_KEY" export GOOGLE_API_KEY="YOUR_GOOGLE_API_KEY" export AWS_ACCESS_KEY_ID="YOUR_AWS_ACCESS_KEY_ID" -export AWS_SECRET_ACCESS_KEY="YOUR_AWS_SECRET_ACCESS_KEY" \ No newline at end of file +export AWS_SECRET_ACCESS_KEY="YOUR_AWS_SECRET_ACCESS_KEY" +export AZURE_OPENAI_ENDPOINT="YOUR_AZURE_MODEL_ENDPOINT" +export AZURE_OPENAI_KEY="YOUR_AZURE_ENDPOINT_KEY" \ No newline at end of file diff --git a/test/chat_models/chat_open_ai_test.exs b/test/chat_models/chat_open_ai_test.exs index acd5a22f..f600a85b 100644 --- a/test/chat_models/chat_open_ai_test.exs +++ b/test/chat_models/chat_open_ai_test.exs @@ -917,6 +917,36 @@ defmodule LangChain.ChatModels.ChatOpenAITest do assert reason.type == nil assert reason.message =~ "maximum context length" end + + @tag live_call: true, live_azure: true + test "supports Azure hosted OpenAI models" do + # https://learn.microsoft.com/en-us/azure/ai-services/openai/chatgpt-quickstart?tabs=command-line%2Cjavascript-keyless%2Ctypescript-keyless%2Cpython-new&pivots=rest-api + + endpoint = System.fetch_env!("AZURE_OPENAI_ENDPOINT") + api_key = System.fetch_env!("AZURE_OPENAI_KEY") + + {:ok, chat} = + ChatOpenAI.new(%{ + endpoint: endpoint, + api_key: api_key, + seed: 0, + temperature: 1, + stream: false + }) + + {:ok, [message]} = + ChatOpenAI.call( + chat, + [ + Message.new_user!("Return the response 'Hi'.") + ], + [] + ) + + assert message.content =~ "Hi" + assert message.role == :assistant + assert message.index == 0 + end end describe "do_process_response/2" do @@ -1291,6 +1321,7 @@ defmodule LangChain.ChatModels.ChatOpenAITest do {:error, %LangChainError{} = reason} = ChatOpenAI.call(chat, [], []) assert reason.type == nil + assert reason.message == "Invalid 'messages': empty array. Expected an array with minimum length 1, but got an empty array instead." end