검색
검색
공개 노트 검색
회원가입로그인

[환경변수에 api 숨기기] 꼬리에 꼬리를 무는 질문

reasonofmoon_a_minimalist_painting_A_scientist_in_a_white_lab_c_65cad018-099f-4bb6-9114-46d27d12257a

오픈 챗방의 데비안 님의 클로드 오퍼스 api 코딩 시리즈를 읽다가

눈에 띄는 부분이 있었습니다.

Claude3 프롬프트 라이브러리및 OPUS API 코딩 --(3)

필자의 API를 윈도11 OS의 환경변수로 세팅해서 숨기는 것 처럼 코딩해서 사용중이다.

ANTHROPIC_API_KEY = os.environ.get("claude3")

솔직히 api 부분이 코딩 초보에게는 조금 두려운 부분이 아닐까 생각합니다.

저 또한 누출되면 안된다는 사실은 알겠는데 그렇다면 불편하게 api 키가 필요할 때마다

api 콘솔에 들어가서 생성하고 복붙하는 게 여간 번거로운 일이 아니었습니다.

그런데 저렇게 숨기는 방법이 있다는 작은 언지가 호기심에 불을 당기는 것은 당연한 일일 것입니다.

그래서 지피티와 대화를 시작했습니다.

환경변수로 api를 숨기는 방법을 설명해줘.

환경변수 설정하기

먼저 환경변수를 설정하는 이유와 방법, 그리고 Claude3 opus와 같은 API를 사용할 때 환경변수를 이용하는 이유에 대해 설명드리겠습니다. 환경변수를 사용하는 주된 이유는 보안과 편의성입니다. API 키와 같은 민감한 정보를 코드에 직접 삽입하지 않고 환경변수로 관리하면, 코드를 공유하거나 공개할 때 민감한 정보를 노출시키지 않을 수 있습니다. 또한, 개발 환경에 따라 다른 설정을 쉽게 적용할 수 있습니다.

Windows 11에서 환경변수를 설정하고, Python 코드에서 이를 사용하는 방법을 단계별로 설명하겠습니다.

Windows 11에서 환경변수 설정하기

  1. 검색: 작업 표시줄의 검색 창에서 '환경 변수'를 검색합니다.

  2. 시스템 속성: 검색 결과에서 '시스템 환경 변수 편집'을 선택합니다. 이로 인해 시스템 속성 창이 열립니다.

  3. 환경 변수: 시스템 속성 창에서 '고급' 탭을 선택한 다음, '환경 변수' 버튼을 클릭합니다.

  4. 새 환경 변수 추가: '환경 변수' 창에서 '새로 만들기'를 선택하여 새 환경 변수를 추가합니다.

  5. 변수 이름과 값 설정: '변수 이름' 필드에 ANTHROPIC_API_KEY를 입력하고, '변수 값' 필드에는 Claude3 opus API 키 값을 입력합니다. 그리고 '확인'을 눌러서 저장합니다.

  6. 확인: 모든 설정 창을 닫기 전에 변경 사항을 저장하고 확인합니다.

Python에서 환경변수 사용하기

환경변수를 설정한 후에는 Python 코드에서 os 모듈을 사용하여 해당 환경변수의 값을 불러올 수 있습니다.

import os

# 환경변수에서 API 키를 가져옵니다.
api_key = os.environ.get("ANTHROPIC_API_KEY")

# 이제 api_key 변수를 사용하여 Claude3 opus와 같은 API에 접근할 수 있습니다.

이 방법을 통해 API 키와 같은 민감한 정보를 코드에서 분리하여 보다 안전하게 관리할 수 있습니다. 이는 특히 공개적으로 코드를 공유하거나 협업할 때 유용합니다.

Prompt

맥 버전도 알려줘

ChatGPT

맥(Mac)에서 환경변수를 설정하고 Python 코드에서 사용하는 방법은 대체로 간단합니다. 터미널을 사용하여 환경변수를 설정할 수 있으며, 이 설정은 대부분의 경우 현재 사용자의 쉘 설정 파일에 추가함으로써 영구적으로 만들 수 있습니다. 다음 단계를 따라 해 보세요.

Mac에서 환경변수 설정하기

  1. 터미널 열기: Finder에서 응용 프로그램 > 유틸리티 > 터미널을 찾아 터미널을 엽니다.

  2. 쉘 설정 파일 선택: Mac의 기본 쉘이 bash인지 zsh인지 확인합니다. macOS Catalina 이후의 버전에서는 기본 쉘이 zsh입니다. 확인 방법은 터미널에서 echo $SHELL을 입력하면 됩니다. 결과가 /bin/zsh이면 zsh, /bin/bash이면 bash입니다.

  3. 환경변수 추가:

    • bash를 사용하는 경우: .bash_profile 또는 .bashrc 파일에 환경변수를 추가합니다. open -e ~/.bash_profile 명령어를 사용해 파일을 열고, 파일의 마지막에 다음과 같이 추가합니다: export ANTHROPIC_API_KEY='your_api_key_here'. 변경사항을 저장한 후에는 source ~/.bash_profile을 실행하여 변경사항을 적용합니다.

    • zsh를 사용하는 경우: .zshrc 파일에 환경변수를 추가합니다. open -e ~/.zshrc 명령어를 사용해 파일을 열고, 파일의 마지막에 다음과 같이 추가합니다: export ANTHROPIC_API_KEY='your_api_key_here'. 변경사항을 저장한 후에는 source ~/.zshrc을 실행하여 변경사항을 적용합니다.

  4. 환경변수 확인: 새 터미널 창을 열고 echo $ANTHROPIC_API_KEY를 입력하여 환경변수가 올바르게 설정되었는지 확인할 수 있습니다. 올바른 API 키 값이 출력되면 성공적으로 설정된 것입니다.

Python에서 환경변수 사용하기

Mac에서 환경변수를 설정한 후에는 Windows와 동일한 방법으로 Python 코드에서 이를 사용할 수 있습니다.

import os

# 환경변수에서 API 키를 가져옵니다.
api_key = os.environ.get("ANTHROPIC_API_KEY")

# 이제 api_key 변수를 사용하여 Claude3 opus와 같은 API에 접근할 수 있습니다.

이렇게 하면 코드 내에 직접 민감한 정보를 넣지 않고도 환경변수를 통해 안전하게 API 키와 같은 데이터를 관리할 수 있게 됩니다. 코드를 공유하거나 배포할 때도 보안성이 향상됩니다.

꼬리에 꼬리를 무는 질문

import anthropic
import os

# Load the API key from environment variables.
ANTHROPIC_API_KEY = os.environ.get("claude3")

# Initialize the Anthropic API client.
client = anthropic.Anthropic(api_key=ANTHROPIC_API_KEY)

# Detailed prompt guiding Claude's conversational and analytical approach.
system_prompt = (
    "The AI assistant '꼬리에 꼬리를 무는 질문' helps users expand ideas using a structured, "
    "conversational approach. It understands the broader context of user queries, providing information that "
    "ranges from basic to comprehensive, offering diverse perspectives, and sharing practical advice. This "
    "assistant engages in role-play to explore different aspects of topics and aids in atomic note-taking analysis, "
    "prioritizing relevance and clarity. It uses positive and inclusive language, suitable for a broad audience. "
    "In cases of ambiguity, it makes educated assumptions based on the context. The assistant maintains a formal tone "
    "throughout conversations, ensuring a professional and respectful dialogue while fostering creative thinking and "
    "idea development."
)

# Send a message creation request to the API.
response = client.messages.create(
    model="claude-3-opus-20240229",
    system=system_prompt,
    messages=[
        {"role": "user", "content": "세계 물 부족 문제에 대한 해법이 있을까?"},
    ],
    max_tokens=1024,
    temperature=1,
)

# Print Claude's response.
print(response.content)

세계 물 부족 문제에 대한 해법에 대해 물어 보았습니다.

이 프롬프트는 제가 ChatGPT 지피티스 내부에 넣어 놓고 가끔 아이디에이션을 위해서 사용하던 프롬프트입니다.

클로드의 응답을 들어 볼까요?

[ContentBlock(text='물 부족 문제 해결을 위한 여러 가지 방안을 생각해 볼 수 있습니다. nn1. 물 절약 및 재활용 강화  n- 가정, 농업, 산업 분야에서 물 사용량을 줄이고 효율성을 높이는 노력이 필요합니다. 누수 방지, 절수 설비 도입, 중수도 시설 확충 등의 대책이 도움될 수 있습니다.n- 오폐수의 처리와 재이용을 활성화하여 제한된 수자원을 효율적으로 활용할 수 있습니다.nn2. 담수화 기술 발전 및 보급 확대n- 바닷물이나 염분이 있는 지하수를 식수로 전환하는 담수화 기술을 고도화하고 보급을 확대해야 합니다. n- 에너지 효율이 높고 환경오염이 적은 담수화 플랜트 개발에 투자가 필요할 것입니다.nn3. 수자원 인프라 구축 및 관리 강화n- 강우량이 많은 지역의 물을 가뭄 지역으로 이동시키는 송수관로, 저수지 등 수자원 인프라를 확충해야 합니다. n- IoT, AI 등 첨단 기술을 활용해 수자원 관리의 효율성을 제고할 필요가 있습니다.nn4. 국제사회의 협력 강화n- 물 부족은 전세계적 문제인 만큼 국가간 협력과 공조가 중요합니다. n- 물 관련 기술과 노하우의 공유, 국경을 초월한 수자원 프로젝트 추진 등 국제사회 차원의 노력도 뒷받침되어야 할 것입니다.nn무엇보다 개인, 기업, 정부 등 사회 구성원 모두의 물 절약 실천과 의식 전환이 근본적인 해법이 될 수 있을 것입니다. 각자의 영역에서 작은 실천을 쌓아가는 한편, 장기적이고 거시적인 관점에서 다각도로 대책을 강구해 나가야 할 것입니다.', type='text')]

가독성을 높이기 위해서 마크다운 으로 변환하였습니다.

물 부족 문제 해결을 위한 여러 가지 방안을 생각해 볼 수 있습니다.

  1. 물 절약 및 재활용 강화

    • 가정, 농업, 산업 분야에서 물 사용량을 줄이고 효율성을 높이는 노력이 필요합니다. 누수 방지, 절수 설비 도입, 중수도 시설 확충 등의 대책이 도움될 수 있습니다.

    • 오폐수의 처리와 재이용을 활성화하여 제한된 수자원을 효율적으로 활용할 수 있습니다.

  2. 담수화 기술 발전 및 보급 확대

    • 바닷물이나 염분이 있는 지하수를 식수로 전환하는 담수화 기술을 고도화하고 보급을 확대해야 합니다.

    • 에너지 효율이 높고 환경오염이 적은 담수화 플랜트 개발에 투자가 필요할 것입니다.

  3. 수자원 인프라 구축 및 관리 강화

    • 강우량이 많은 지역의 물을 가뭄 지역으로 이동시키는 송수관로, 저수지 등 수자원 인프라를 확충해야 합니다.

    • IoT, AI 등 첨단 기술을 활용해 수자원 관리의 효율성을 제고할 필요가 있습니다.

  4. 국제사회의 협력 강화

    • 물 부족은 전세계적 문제인 만큼 국가간 협력과 공조가 중요합니다.

    • 물 관련 기술과 노하우의 공유, 국경을 초월한 수자원 프로젝트 추진 등 국제사회 차원의 노력도 뒷받침되어야 할 것입니다.

무엇보다 개인, 기업, 정부 등 사회 구성원 모두의 물 절약 실천과 의식 전환이 근본적인 해법이 될 수 있을 것입니다. 각자의 영역에서 작은 실천을 쌓아가는 한편, 장기적이고 거시적인 관점에서 다각도로 대책을 강구해 나가야 할 것입니다.

[환경변수에 api 숨기기] 꼬리에 꼬리를 무는 질문 image 2

조회수 : 389
공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기