paint-brush
100일간의 AI, 8일차: GPT-4를 사용하여 Microsoft의 시맨틱 커널 실험~에 의해@sindamnataraj
876 판독값
876 판독값

100일간의 AI, 8일차: GPT-4를 사용하여 Microsoft의 시맨틱 커널 실험

~에 의해 Nataraj6m2024/01/31
Read on Terminal Reader

너무 오래; 읽다

Semantic Kernel은 개발자가 챗봇, RAG, Copilot 및 에이전트를 포함한 AI 애플리케이션을 만드는 데 도움이 되는 Microsoft의 오픈 소스 SDK입니다.
featured image - 100일간의 AI, 8일차: GPT-4를 사용하여 Microsoft의 시맨틱 커널 실험
Nataraj HackerNoon profile picture
0-item
1-item


안녕 모두들! 저는 Nataraj입니다 . 여러분과 마찬가지로 저도 최근 인공 지능의 발전에 매료되었습니다. 일어나는 모든 발전을 따라잡아야 한다는 것을 깨닫고 개인적인 학습 여정을 시작하기로 결정하여 100일의 AI가 탄생했습니다! 이 시리즈를 통해 저는 LLM에 대해 배우고 블로그 게시물을 통해 아이디어, 실험, 의견, 동향 및 학습 내용을 공유할 것입니다. HackerNoon( 여기) 또는 내 개인 웹사이트 (여기) 에서 여정을 따라가실 수 있습니다. 오늘 기사에서는 GPT-4의 도움으로 시맨틱 커널을 구축해 보겠습니다.


Semantic Kernel은 개발자가 챗봇, RAG, Copilot 및 에이전트를 포함한 AI 애플리케이션을 만드는 데 도움이 되는 Microsoft의 오픈 소스 SDK입니다. 이는 langchain이 수행하는 작업과 유사합니다. 아마도 langchain에 대한 Microsoft의 답변이라고 할 수 있을 것입니다.


기존 소프트웨어를 확장 가능하고 AI 기능에 쉽게 노출할 수 있도록 설계되었습니다. 또한 애플리케이션이 시간이 지남에 따라 AI 모델을 최신 및 최고의 버전으로 업데이트할 것을 예상하여 설계되었습니다.

시맨틱 커널


공간이 매우 빠르게 발전하고 있지만 의미론적 커널을 탐색할 때 염두에 두어야 할 몇 가지 정의가 있습니다.

  • Chat Bot: 사용자와의 간단한 채팅입니다.
  • RAG: 간단한 채팅 봇이지만 실시간 및 개인 데이터를 기반으로 합니다.
  • 부조종사: 추천 및 제안을 통해 작업을 수행하기 위해 나란히 도움을 주는 것을 의미합니다.
  • 에이전트: 제한된 인간 개입으로 자극에 반응합니다. 에이전트는 사용자를 대신하여 이메일 전송, 티켓 예약 등의 작업을 실행합니다.

시맨틱 커널은 어떻게 작동하나요?

Semantic Kernel의 작동 방식을 설명하기 위해 텍스트를 가져와 140자 트윗으로 변환하는 예를 들어 보겠습니다. 하지만 우리는 Semantic Kernel을 사용하여 이를 수행할 것입니다. 우리는 여기 이전 게시물에서도 비슷한 요약을 했습니다 .


저는 Semantic Kernel의 Python 라이브러리를 사용할 것입니다. 그러나 Semantic Kernel은 Microsoft에서 만들었기 때문에 C#에서도 이 작업을 수행할 수 있습니다. 이를 수행하는 방법은 Microsoft의 공개 문서를 확인하세요.

1단계: 시맨틱 커널 시작

아래에서는 시맨틱 커널을 시작하고 텍스트 완성에 사용할 LLM으로 OpenAI의 gpt-4 모델을 사용하도록 지시하여 텍스트 완성 서비스를 설정합니다.

 import semantic_kernel as sk from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, OpenAIChatCompletion import os from IPython.display import display, Markdown import asyncio from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) # read local .env file api_key = os.environ['OPENAI_API_KEY'] kernel = sk.Kernel() kernel.add_text_completion_service("openai", OpenAIChatCompletion("gpt-4",api_key)) print("Kernel Initiated")

2단계: 의미론적 기능 이해:

Semantic Kernel 세계에서는 기본 함수와는 다른 Semantic 함수 개념이 있습니다. 기본 함수는 모든 프로그래밍 언어로 작성하는 일반 함수입니다. 의미론적 기능은 커널에 의해 조정될 수 있는 반복 가능한 LLM 프롬프트의 캡슐화입니다. 의미론적 기능을 작성하는 다음 단계에서 의미론적 기능이 무엇인지 더 잘 이해할 수 있을 것입니다.


네이티브 및 의미 함수


3단계: 의미 함수 생성

여기서는 140자 미만으로 연결을 요약하는 프롬프트 sk_prompt를 생성합니다(이것이 이 연습의 목표입니다). 그런 다음 프롬프트를 입력으로 전달하여 커널을 사용하여 의미 함수를 생성하고 우리가 생성한 의미 함수를 나타내고 커널을 통해 반복적으로 액세스할 수 있는 summary_function 개체를 반환합니다. 의미론적 함수를 생성할 때 고객 프롬프트를 사용하고 max_tokens, 온도 등과 같은 LLM 구성 정보도 제공합니다. 이제 기본 함수와 의미론적 함수의 이전 이미지로 돌아가면 더 이해가 될 것입니다.


 sk_prompt = """ {{$input}} Summarize the content above in less than 140 characters. """ summary_function = kernel.create_semantic_function(prompt_template = sk_prompt, description="Summarizes the input to length of an old tweet.", max_tokens=200, temperature=0.1, top_p=0.5) print("A semantic function for summarization has been registered.")

4단계: 의미론적 기능을 사용하여 텍스트를 140자의 트윗으로 요약합니다.

이제 변수 sk_input을 사용하여 요약하려는 텍스트를 생성하고 커널을 통해 sematic 함수를 호출한 다음 결과를 표시합니다.

 sk_input = """ Let me illustrate an example. Many weekends, I drive a few minutes from my house to a local pizza store to buy a slice of Hawaiian pizza from the gentleman that owns this pizza store. And his pizza is great, but he always has a lot of cold pizzas sitting around, and every weekend some different flavor of pizza is out of stock. But when I watch him operate his store, I get excited, because by selling pizza, he is generating data. And this is data that he can take advantage of if he had access to AI. AI systems are good at spotting patterns when given access to the right data, and perhaps an AI system could spot if Mediterranean pizzas sell really well on a Friday night, maybe it could suggest to him to make more of it on a Friday afternoon. Now you might say to me, "Hey, Andrew, this is a small pizza store. What's the big deal?" And I say, to the gentleman that owns this pizza store, something that could help him improve his revenues by a few thousand dollars a year, that will be a huge deal to him. """ # using async to run the semantic function async def run_summary_async(): summary_result = await kernel.run_async(summary_function, input_str=sk_input) display(summary_result) asyncio.run(run_summary_async())


내가 얻은 결과는 다음과 같습니다.


AI는 판매 데이터를 분석하여 소규모 피자 가게 주인이 재고를 최적화하여 잠재적으로 연간 수익을 늘릴 수 있도록 돕습니다.


Semantic Kernel은 Semantic Functions & Native Functions를 함께 사용하는 등 더 많은 기능을 갖추고 있으며 강력한 AI 애플리케이션을 만들 수 있도록 설계되었습니다. 나는 미래의 게시물에서 그들에 대해 더 많이 쓸 것입니다.


이것이 AI 100일의 8일차입니다.


나는 대형 기술 분야에서 일어나는 모든 일 뒤에 숨어 있는 2차 통찰력에 대해 이야기하는 Above Average라는 뉴스레터를 작성합니다. 기술 분야에 종사하고 평범해지고 싶지 않다면 구독하세요 .


AI 100일에 대한 최신 업데이트를 보려면 Twitter , LinkedIn 또는 ** HackerNoon **에서 나를 팔로우하세요. 기술 분야에 종사하는 분이라면 여기에서 제 기술 전문가 커뮤니티에 가입하는 데 관심이 있으실 것입니다.


이전 7일차: Langchain을 사용하여 데이터용 Chat-GPT를 구축하는 방법은 무엇입니까?