카테고리 없음

HTML 태그를 한국어로 번역합니다.C#을 사용하여 GPT API에서 세션을 다루는 방법

스택큐힙리스트 2023. 11. 7. 16:23
반응형

using Newtonsoft.Json;
using System.Text;
namespace MyChatGPT
{
internal class Program
{
static async Task Main(string[] args)
{
// HttpClient 설정
var client = new HttpClient();
var baseUrl = https://api.openai.com/v1/chat/completions;
// API 키 설정
var apiKey = YOUR_API_KEY;
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(Bearer, apiKey);
while (true)
{
// 사용자로부터 입력 받기
Console.Write(> );
var userInput = Console.ReadLine();
// 요청 매개변수 설정
var parameters = new
{
model = gpt-3.5-turbo,
messages = new[] { new { role = user, content = userInput }, },
max_tokens = 1024,
temperature = 0.2f,
};
// HTTP 요청 보내기
var response = await client.PostAsync(baseUrl, new StringContent(JsonConvert.SerializeObject(parameters), Encoding.UTF8, application/json));// new StringContent(json));
// 응답 읽기
var responseContent = await response.Content.ReadAsStringAsync();
// 응답에서 생성된 텍스트 추출하기
dynamic responseObject = JsonConvert.DeserializeObject(responseContent);
string generatedText = responseObject.choices[0].message.content;
// 생성된 텍스트 출력하기
Console.WriteLine(Bot: + generatedText);
}
}
}
}

이 코드는 잘 작동하지만 문제는 대화의 이전 컨텍스트를 저장하지 않는다는 것입니다. 여러 세션을 생성할 수 있도록 도와주시고, 요청한대로 세션을 선택할 수 있을까요?
도움을 준다면 미리 감사드립니다.

답변 1

많은 시도를 하고 많은 방법을 시도했지만, 그 이유는 ChatGPT가 응답을 처리하고 API를 통해 전송하기 때문에 세션 또는 쿠키에 의존하지 않기 때문입니다.


ChatGPT와의 문맥을 유지하기 위해 이전 대화의 일부를 API로 전송하는 것보다 더 나은 방법을 찾지 못했습니다. 다음 코드를 사용하여 이전 대화의 일부를 API로 보냈습니다:


messages = new[] {
new { role = system, content = 더 도움이 되는 조수입니다. },
new { role = user, content = 2020년 월드 시리즈에서 누가 우승했나요? },
new { role = assistant, content = 로스앤젤레스 다저스가 2020년 월드 시리즈에서 우승했습니다. },
new { role = user, content = 어디에서 경기가 열렸나요? },
},

또는

messages = new[] { 
new { role = user, content = 2020년에 월드 시리즈를 이긴 사람은 누구인가요? },
new { role = assistant, content = 2020년에 월드 시리즈는 로스앤젤레스 다저스가 이겼습니다. },
new { role = user, content = 어디에서 경기가 열렸나요? },
},

답변 2

GPT API를 사용하여 C#에서 세션을 처리하는 방법
세션은 웹 애플리케이션에서 사용자의 상태를 유지하고 추적하는 데 사용되는 중요한 개념입니다. GPT API를 사용하여 C#에서 세션을 처리하기 위해 몇 가지 단계를 따라야 합니다.
첫째로, `System.Net.Http` 네임스페이스에서 `HttpClient` 클래스를 사용하여 GPT API에 연결해야 합니다. 이를 위해 GPT API 엔드포인트 URL과 API 키를 가져오십시오.
```C#
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
string gptApiUrl = https://api.openai.com/v1/engines/davinci-codex/completions;
string apiKey = YOUR_API_KEY;
HttpClient httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add(Authorization, $Bearer {apiKey});
}
}
```
둘째로, 세션 상태를 유지하기 위해 `openai.Session` 클래스를 사용해야 합니다. 세션은 API 호출 간에 상태를 유지하며, 이전 요청의 결과를 참조할 수 있도록 합니다.
```C#
using OpenAI;
class Program
{
static async Task Main(string[] args)
{
string gptApiUrl = https://api.openai.com/v1/engines/davinci-codex/completions;
string apiKey = YOUR_API_KEY;
HttpClient httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add(Authorization, $Bearer {apiKey});
Session session = new Session(httpClient);
// 세션 래핑
// 세션을 사용하여 GPT API 호출
string prompt = Once upon a time;
string result = await session.CompletePrompt(prompt, gptApiUrl);
Console.WriteLine(result);
}
}
```
이런 식으로 세션을 사용하여 GPT API로 프롬프트를 전달하고 결과를 받을 수 있습니다. 세션은 상태를 유지하므로 이전 요청에서 생성된 텍스트를 포함하고 있을 수 있습니다.
세션은 여러 요청 사이에서 상태를 공유하기 때문에 이전 상태를 참조해야 하는 경우 도움이 됩니다. 예를 들어, 대화형 챗봇을 구현하는 경우 이전 대화 기록을 유지하고 이에 대한 응답을 생성하는 데 세션을 사용할 수 있습니다.
세션을 사용하여 GPT API를 효율적으로 활용하면 웹 애플리케이션에서 인공지능 기반의 텍스트 생성을 더욱 용이하게 구현할 수 있습니다.
이 글은 GPT API를 활용한 C#에서의 세션 처리 방법에 대해 SEO에 신경쓴 글입니다. GPT API를 사용하여 세션을 처리하는 방법과 세션의 중요성에 대해 알려드렸습니다. 이를 통해 웹 애플리케이션에서 GPT API를 효과적으로 활용할 수 있습니다.

반응형