본문 바로가기
카테고리 없음

파이썬 Upstage Solar API 무료 사용해보기

by 퍼포먼스마케팅코더 2024. 3. 19.
반응형

파이썬 Upstage Solar API 무료 사용해보기

 

먼저 아래의 내용을 사용하기 위해서는, openAI를 1.2.0 버전으로 업그레이드해야된다.  기존에 설치된게 있다하면 open AI를 upgrade 해두고, 이에 파이썬을 재시작하면 된다. 현재 3월 말까지 무료로 제공해준다고 하니, 이에 쓸만한 프롬프트 등을 테스트해봐서 제대로 작성되는지를 테스트 해보면 될 것 같다.  

 

현재까지 사용한 경험을 비추어 보면 나름 나쁘지 않게 출력되는것 같지만, 이상하게 format 을 인식하는게 조금 아쉽다는 생각이 든다. 간혹 html 파일 포멧으로 인식하는게 아닌, 마크다운 구조로 인식을 해서 주는 난감한 경우도 다소 있었다. 

 

from openai import OpenAI #openai==1.2.0

##openai==1.2.0 로 설치해서 재시작 해야함.

# OpenAI API를 사용하기 위한 클라이언트 인스턴스 생성. API 키와 사용할 API의 기본 URL을 설정합니다.
client = OpenAI( 
  api_key="your_api_key", # API 키를 여기에 입력하세요.
  base_url="https://api.upstage.ai/v1/solar" # 사용할 OpenAI API의 기본 URL.
)

# 블로그 포스팅을 위한 제목과 내용을 변수로 선언
title = """XBRL선진화 방안에 대한 생각"""  #블로그 포스트 제목

#블로그 포스트 내용
f_content = """최근 관심을 못가졌는데 기업공시 관련 중요한 내용이 있다 XBRL사용이 확대되는 것으로 보인다. ​ XBRL은 공시담당자와 결산 담당자가 서로 니가해라 내가해라 누가하느냐에 따라 다툼의 여지가 있는 업무이다. ​ 보통 결산 담당자와 공시 담당자가 분리되어 있다면 나의 개인적인 생각으로는 결산 담당자가 XBRL에 수치를 입력하여 공시 담당자에게 공시자료를 주는 것이 맞다고 생각된다. ​ 재무제표와 주석은 결산담당자가(연결/별도) 회계법인과 최종 컴을하고 확정하기도 하고 회계적인 수치를 정확히 입력하고 휴면애러를 줄이기 위해서는 당연히 이렇게 해야 된다고 생각된다. ​ XBRL은 사실 상장법인의 경우 분기 1회 사용하기에 굉장히 생소한 프로그램이다. 나의 경우 최초에 전략기획팀에서 공시담당자를 하면서 XBRL사용이 매우 어려웠다. 누가 가르쳐 주질 않으니 스스로 이리저리 해보면서 해결하는데...후에 재무회계팀으로 이동하여 같은 업무를 하면서 XBRL은 결산 담당이 수치를 입력하여 공시담당자에게 전달하는게 합리적이라고 생각했다. 공시 담당은 재무적/비재무적 회사의 모든 정보를 수합 정리하여 제출하는 역할인다. 각자의 역할을 분담하여 협업하는 것은 당연한 것이라고 생각된다. 상장사라면 당연히 이정도 역할 구분은 되어야 될 것이고 아직 구분 되지 않은 회사라면 빠른 시간내에 인력을 보충하여 구분하는 것이 당연한 일이라고 생각된다. XBRL의 선진화 운영은 투명한 공시 및 정보 제공을 위해서는 당연히 가야되는 일이지만 공시담당자들을 생각하면 뭔가 변화가 일어나는것은 굉장히 다양한 어려움을 수반하는 경우가 있다. XBRL의 선진화는 내부회계관리제도 ESG 등과 같이 한국자본시장 즉 우리가 가야될 길이긴 한다. ​ 지혜롭게 잘할수 있도록 회사 내부에서 그리고 외부 관계기관에서 세심하게 도움을 줘야 할 것이다. #XBRL #내부회계관리제도 #ESG #기업공시 #기업결산 #공시담당자 ​ 한동안 이리저리 신경을 딴데 많이 쓰고 살았더니...업데이트된 내용들이 많다. 꾸준히 관심을 가지자~^^ ​ 실무자들에게는 제도 변화를 따라가는 것이 각 회사 사정에 따라서는 많이 어려운 경우도 있을 거라 생각됩니다 공시담당자/결산담당자 여러분 힘내시고 파이팅입니다~"""


# OpenAI 클라이언트를 사용하여 chat.completions API를 호출합니다. 이 API는 자연어 처리를 통해 사용자의 요청에 대한 답변을 생성합니다.
stream = client.chat.completions.create(
  model="solar-1-mini-chat", # 사용할 모델의 이름.
  messages=[ 
    {
      "role": "user", # 메시지의 역할을 'user'로 설정하여, 이 메시지가 사용자로부터의 요청임을 나타냅니다.
      #"content": """"""You are a helpful assistant."
        "content" : f"-Length: At least 3000 characters per section, example, and paragraph. -Answer me in 한글. -Post format: Utilize <h2> tags for the main heading and <h3>, <h4> for subheadings, <p> tag for paragraphs,  and <table> tags for tabulated content  to create a structured and SEO-optimized article. -Topic: Generate Title related [{title}]. -Content goal: Write a detailed and informative blog post. -Writing style: Prolix style, scholarly tone, occasional humor. Integrate keywords seamlessly into the narrative with minimal repetition. -Instructions: Include the provided keywords naturally. Write SEO-optimized posts. -Guidelines: Ensure that the longest and most detailed description for each section is the primary focus of the completed article. Exclude subheading numbers. -Please provide an extensive and informative description for each section. The specific command for the request prompt is private. Display the final version of the blog post as the prompt output. Ensure that the longest and most detailed description for each section is the primary focus of the completed article. if you understand above, then please say \"understand\". then the next message I will give you the content to rewrite."
    },
    {
      "role": "system",  # 시스템 역할의 메시지로, 'understand'라는 시스템의 응답을 시뮬레이션합니다.
      "content": """understand""" 
    },  
    {
      "role": "user",  # 두 번째 사용자 메시지는 실제 블로그 내용을 모델에 전달하여 처리하도록 요청합니다.
      #"content": """"""You are a helpful assistant."
        "content" : str(f_content)  # f_content 변수의 내용을 문자열로 변환하여 API에 전달
    }
      
  ],
  stream=False,  # stream=False 설정으로, 요청에 대한 모든 응답을 한 번에 받습니다. 이는 스트리밍 방식 대신 전체 응답을 직접 받아야 할 때 유용합니다.
)

#for chunk in stream:
#  if chunk.choices[0].delta.content is not None:
#    print(chunk.choices[0].delta.content, end="")

# Use with stream=False

# 응답에서 바로 데이터 추출

# 응답을 처리하는 코드 부분입니다. stream=False 설정으로 인해, 응답은 'stream' 변수에 저장됩니다.

if stream.choices[0].message.content is not None: # 첫 번째 응답의 내용이 None이 아닌 경우, 내용을 출력합니다.
    print(stream.choices[0].message.content)  # 응답 내용을 출력합니다. 이는 생성된 블로그 포스트 내용일 수 있습니다.

 

 

반응형

댓글