C# Console 프로젝트에서 OpenAI Responses API 사용하기
1. 개요
이 문서는 .NET 콘솔 프로젝트 기반으로 OpenAI 공식 .NET SDK를 사용하여 간단한 CLI 프로그램을 구현하는 방법을 설명합니다.
이전에는 File-Based App(FBA) 방식으로 구성했지만, 본 문서는 정식 csproj 기반 콘솔 프로젝트 방식으로 작성되었습니다.
목표
dotnet new console기반 프로젝트- NuGet 패키지 명시적 참조
- 사용자 입력 → Responses API 호출
- 모델 응답 출력
- 반복 실행 가능한 CLI 구조
2. 사전 준비
2.1 .NET SDK 확인
dotnet --version

.NET 8 이상 권장
(예제는 net10.0 기준)
2.2 OpenAI API Key 발급
- https://platform.openai.com 접속
- 로그인
- Profile → API Keys
- "Create new secret key"
- 키 복사 후 안전하게 보관

주의사항
- API 키는 노출되면 안 됩니다.
- 코드에 직접 작성하지 마십시오.
- GitHub에 커밋하면 안 됩니다.
3. API Key 등록 (권장 방식)
3.1 Windows (PowerShell)
setx OPENAI_API_KEY "발급받은_키"

새 터미널을 열어야 적용됩니다.
확인:
echo $env:OPENAI_API_KEY

3.2 macOS / Linux
export OPENAI_API_KEY="발급받은_키"
확인:
echo $OPENAI_API_KEY
4. 콘솔 프로젝트 생성
4.1 새 프로젝트 생성
dotnet new console -n OpenAiChat
cd OpenAiChat
4.2 OpenAI 패키지 추가
dotnet add package OpenAI --version 2.8.0
4.3 csproj 파일 예시
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="OpenAI" Version="2.8.0" />
</ItemGroup>
</Project>
5. Program.cs 작성
Program.cs 내용을 아래 코드로 교체합니다.
#pragma warning disable OPENAI001
using OpenAI.Responses;
var apiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY");
if (string.IsNullOrWhiteSpace(apiKey))
{
Console.WriteLine("OPENAI_API_KEY 환경 변수가 필요합니다.");
return;
}
var model = "gpt-5";
var systemPrompt = "Limit your answer to one sentence.";
ResponsesClient client = new(model: model, apiKey: apiKey);
while (true)
{
Console.Write("Prompt (exit 입력 시 종료): ");
var userPrompt = Console.ReadLine();
if (string.IsNullOrWhiteSpace(userPrompt))
continue;
if (userPrompt.Equals("exit", StringComparison.OrdinalIgnoreCase))
break;
var options = new CreateResponseOptions
{
Instructions = systemPrompt
};
options.InputItems.Add(ResponseItem.CreateUserMessageItem(userPrompt));
var result = await client.CreateResponseAsync(options);
Console.WriteLine();
Console.WriteLine("Response:");
Console.WriteLine(result.Value.GetOutputText());
Console.WriteLine();
}
#pragma warning restore OPENAI001
6. 실행
프로젝트 루트에서:
dotnet run
첫 실행 시 동작
- NuGet 패키지 복원
- 컴파일
- 실행
7. 실행 예시
Prompt (exit 입력 시 종료): What is .NET?
Response:
.NET is a cross-platform framework for building modern applications.
Prompt (exit 입력 시 종료): exit
8. 코드 구성 설명
8.1 ResponsesClient
OpenAI Responses API 호출용 클라이언트입니다.
8.2 CreateResponseOptions
요청 옵션 객체입니다.
Instructions→ 시스템 프롬프트 역할InputItems→ 사용자 입력 추가
8.3 result.Value.GetOutputText()
CreateResponseAsync()는 ClientResult<ResponseResult>를 반환합니다.
따라서 .Value를 통해 실제 결과 객체를 얻은 뒤 텍스트를 추출합니다.
9. 모델 변경
var model = "gpt-5-mini";
경량 모델 사용 가능
10. 시스템 프롬프트 변경
var systemPrompt = "Respond in Korean.";
11. Publish (선택)
실행 파일 생성
dotnet publish -c Release -o publish
publish 폴더 안에 실행 파일이 생성됩니다.
추천 자료: ASP.NET Core 인증 및 권한 부여
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!