필터 지우기
필터 지우기

Connecting to ChatGPT using API

조회 수: 438 (최근 30일)
John Adams
John Adams 2023년 1월 15일
답변: Robert 2024년 6월 7일
I tried connecting to Chat GPT with the following web instructions and get the error as reflected ...
prompt = 'What is the capital of France?';
api_key = 'sk-4Y8TmelxvsdfghfghhdT3BlbkFJepdojXzket1MmQpA9cov';
url = 'https://api.openai.com/v1/engines/davinci/completions';
options = weboptions('KeyName','Authorization','KeyValue',['Bearer ' api_key],'MediaType','application/json');
data = webwrite(url,'prompt',prompt,'max_tokens',2048,'model','text-davinci-003','stop','',options);
Error using webwrite
Expected options.MediaType to be 'application/x-www-form-urlencoded' for Name-Value pairs. Either set options.MediaType to 'application/x-www-form-urlencoded' or create a single encoded string from
the Name-Value pairs.
answer = loadjson(data);
answer = answer.choices{1}.text;
disp(answer)
Does anyone know how to connect MATLAB to Chat GPT to send prompts and retrieve back the responses. Also how to send data over to fine tune the model and then to further prompt that model?
It would be good for Mathworks to double quick release a toolbox on FileExchange for this as Python already has an OpenAI library. Seems like Mathworks is always one step behind Python these days.
Thx
  댓글 수: 4
Wii Che
Wii Che 2023년 2월 19일
% Extract the response text
response_text = response.Body.Data;
response_text = response_text.choices(1).text;
disp(response_text);
There is an error, is it a version problem
Yakoub
Yakoub 2023년 10월 28일

댓글을 달려면 로그인하십시오.

채택된 답변

Hans Scharler
Hans Scharler 2023년 1월 23일
I have been researching the davinci/completions space and have working MATLAB code using net http. Get your API Key at OpenAPI: https://beta.openai.com/account/api-keys
import matlab.net.*
import matlab.net.http.*
% Define the API endpoint Davinci
api_endpoint = "https://api.openai.com/v1/engines/davinci/completions";
% Define the API key from https://beta.openai.com/account/api-keys
api_key = "XXXYYYZZZ";
% Define the parameters for the API request
prompt = "How many tablespoons are in 2 cups?"
parameters = struct('prompt',prompt, 'max_tokens',100);
% Define the headers for the API request
headers = matlab.net.http.HeaderField('Content-Type', 'application/json');
headers(2) = matlab.net.http.HeaderField('Authorization', ['Bearer ' + api_key]);
% Define the request message
request = matlab.net.http.RequestMessage('post',headers,parameters);
% Send the request and store the response
response = send(request, URI(api_endpoint));
% Extract the response text
response_text = response.Body.Data;
response_text = response_text.choices(1).text;
disp(response_text);
  댓글 수: 9
Georgi Nalbantov
Georgi Nalbantov 2023년 6월 18일
Sometimes one gets a "10 sec" timeout error and therefore no response. One fix for this is:
% Send the request and store the response.
opt = 2;
if opt == 1 % org
response = send(request, URI(api_endpoint));
else
options = HTTPOptions;
options.ConnectTimeout = 60;
response = send(request, URI(api_endpoint),options);
end
The original value is: options.ConnectTimeout = 10;
O.Hubert
O.Hubert 2024년 4월 25일
I have tried to provided code in MATLAB R2017a but it returns an error:
Error using matlab.net.http.field.AuthorizationField/scalarToString (line 119)
The "xxx" value in an AuthInfo is an encoded username/password that can only appear for the "Basic" Scheme, and it must be the only other property.
The xxx stand for the API key that I have hidden for obvious reasons.
How do I set a Scheme so that I can create the HeaderField?
Thank you.

댓글을 달려면 로그인하십시오.

추가 답변 (4개)

Duncan Carlsmith
Duncan Carlsmith 2023년 2월 23일
See Generate MATLAB code using ChatGPT API at https://www.mathworks.com/matlabcentral/fileexchange/125220-generate-matlab-code-using-chatgpt-api for a Live Script that implements the great answers here. Thank you all so much!
You get different code for the same prompt each time. For the prompt used, there is often a minor bug. Great for teaching debugging skills. ;) I'll let you find the bugs in the example I provided.
  댓글 수: 2
Hans Scharler
Hans Scharler 2023년 2월 23일
Your project works perfectly. Thanks for sharing!
Duncan Carlsmith
Duncan Carlsmith 2023년 2월 24일
Thanks for checking it out!

댓글을 달려면 로그인하십시오.


Hans Scharler
Hans Scharler 2023년 9월 27일
I have updated my answer using the built-in webwrite function from MATLAB.
% Define the prompt
prompt = "What is the capital of France?";
% Define the API endpoint
api_endpoint = 'https://api.openai.com/v1/chat/completions';
% Define the API key from https://platform.openai.com/account/api-keys
api_key = "sk-XXXYYYZZZ";
% Define the headers
headers = ["Content-Type", "application/json"; "Authorization", "Bearer " + api_key];
% Define the data
message = containers.Map({'role', 'content'}, {'user', prompt});
data = containers.Map({'model', 'messages'}, {'gpt-3.5-turbo', {message}});
% Convert the data to JSON
data = jsonencode(data);
% Send the POST request
options = weboptions('RequestMethod', 'post', 'HeaderFields', headers);
response = webwrite(api_endpoint, data, options);
% Return the response
response = response.choices.message.content;
disp(prompt)
What is the capital of France?
disp(response)
The capital of France is Paris.
  댓글 수: 1
正勋 郭
正勋 郭 2024년 5월 4일
I run the above codes, get this error:
错误使用 webwrite
连接到 https://api.openai.com/v1/chat/completions 时出错: Failed to connect to 127.0.0.1 port 7890 after 2055 ms: Couldn't connect to server

댓글을 달려면 로그인하십시오.


thijs buuron
thijs buuron 2023년 1월 20일
If you have the curl command (get it from the network part of the console of you webbrowser). You could use: https://curlconverter.com/matlab/ wich converts it to matlab code for you.
  댓글 수: 2
Gregorio Ariel Guerrero Moral
Gregorio Ariel Guerrero Moral 2023년 4월 6일
편집: Gregorio Ariel Guerrero Moral 2023년 4월 6일
works very well the two options
%% Option1: https://curlconverter.com/matlab/
uri = 'https://api.openai.com/v1/chat/completions';
body = struct(...
'model', 'gpt-3.5-turbo',...
'messages', {{
struct(...
'role', 'user',...
'content', 'What is the capital of France?'...
)
}}...
);
options = weboptions(...
'MediaType', 'application/json',...
'HeaderFields', {'Authorization' ['Bearer ' getenv('OPENAI_API_KEY')]}...
);
response = webwrite(uri, body, options);
disp(response.choices.message.content)
And the second options
%% Option 2: HTTP Interface https://curlconverter.com/matlab/
import matlab.net.*
import matlab.net.http.*
import matlab.net.http.io.*
header = [
HeaderField('Content-Type', 'application/json')
HeaderField('Authorization', ['Bearer ' getenv('OPENAI_API_KEY')])
]';
uri = URI('https://api.openai.com/v1/chat/completions');
body = JSONProvider(struct(...
'model', 'gpt-3.5-turbo',...
'messages', {{
struct(...
'role', 'user',...
'content', 'What is the capital of France?'...
)
}}...
));
response = RequestMessage('post', header, body).send(uri.EncodedURI);
disp(response.choices.message.content)
Remember to setup in you OS the variable OPENAI_API_KEY.
The result of this chat is:
tony
tony 2023년 9월 10일
thank you
not working for a longer quesion

댓글을 달려면 로그인하십시오.


Robert
Robert 2024년 6월 7일
The average electricity measurements for all 12 months are in the variable monthly. You will visualize the first months of each quarter in context of the rest of the months.
TASK
Create a bar plot for all of the values in monthly. Add the first month of each quarter using xticklabels.
This should label the first four bars in the graph, which you will fix in the next task.

카테고리

Help CenterFile Exchange에서 Call Web Services from MATLAB Using HTTP에 대해 자세히 알아보기

제품


릴리스

R12.1

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by