>기술 주변기기 >일체 포함 >ChatGPT 공유-LLM 애플리케이션 개발 방법

ChatGPT 공유-LLM 애플리케이션 개발 방법

PHPz
PHPz앞으로
2023-04-12 21:43:042486검색

1​Background​

ChatGPT는 업계에 큰 충격을 주었고, 각계각층에서 대규모 언어 모델과 일반 인공지능을 논의하고 있습니다. AI는 50여년의 발전을 거쳐 지금은 산업구조의 수평적 발전의 중요한 시기를 맞이하고 있습니다. 이러한 변화는 "사전 훈련 + 미세 조정"에서 "사전 훈련, 프롬프트 및 예측"으로 진화한 NLP 분야의 패러다임 전환에서 비롯됩니다. 이 새로운 모델에서는 다운스트림 작업이 사전 훈련된 모델에 맞춰 조정되므로 대규모 모델이 여러 작업에 적합해집니다. 이러한 변화는 AI 산업에서 수평적 분업의 기반을 마련했고, 대형 언어 모델이 인프라화되면서 사용자와 모델을 연결하는 데 주력하는 프롬프트엔지니어링(Prompt Engineering) 기업이 속속 등장했다. AI 산업의 노동 분업은 기본 인프라(클라우드 서비스 공급자), 대형 모델, 프롬프트 엔지니어링 플랫폼 및 터미널 애플리케이션을 포함하여 초기에 구체화되었습니다. AI 산업이 변화함에 따라 개발자는 LLM(대형 언어 모델) 및 Prompt Engineering을 최대한 활용하여 혁신적인 애플리케이션을 개발할 수 있습니다.

2 Prompt-Ops 하의 애플리케이션

현재 LLM을 기반으로 애플리케이션을 개발해야 합니다. 우리가 직면한 가장 큰 엔지니어링 문제는 무엇입니까?

  • 대형 언어 모델은 인터넷에 연결할 수 없으며 최신 정보를 얻을 수 없습니다
  • 대형 언어 모델은 개인 데이터가 없으며 수직적 질문에 답변할 수 없습니다
  • 대형 언어 모델은 의 공개 API(text-davinci-003)입니다. 대규모 언어 모델은 ChatGPT와 다릅니다. 뛰어난 상황별 기능
  • 대규모 언어 모델은 다른 도구를 구동할 수 없습니다.

2.1 Langchain과 같은 엔지니어링 프레임워크는 이러한 엔지니어링 문제를 해결합니다.

간단히 말하면 Langchain을 예로 들어보겠습니다. LangChain은 LLM의 기본 기능을 캡슐화한 것이며 일종의 Prompt Engineering 또는 Prompt-Ops입니다.

  • 다양한 LLM 서비스에 액세스하고 다양한 대형 언어 모델의 호출을 추상화할 수 있습니다
  • 다양한 PromptTemplate을 생성하여 맞춤형 프롬프트 템플릿을 구현할 수 있습니다
  • 체인을 생성하여 PromptTemplate에 대한 호출을 결합할 수 있습니다
  • 다양한 도구를 사용하여 달성할 수 있습니다 검색/수학/개인 데이터베이스 연결/Python 코드와 같이 GPT-3가 현재 잘하지 못하는 작업
  • 에이전트를 사용하여 LLM을 구동하여 어떤 작업을 어떤 순서로 수행할지 결정할 수 있습니다. 작업은 도구를 사용하고 해당 출력을 관찰하는 것일 수도 있고 사용자에게 반환될 수도 있습니다.
  • 메모리 모듈을 통해 대화 기록 모델링을 구현할 수 있습니다.

2.2 일부 Langchain 개발 예시

2.2.1 GPT와 검색 결합

ChatGPT 공유-LLM 애플리케이션 개발 방법

ChatGPT 공유-LLM 애플리케이션 개발 방법

이것은 ChatGPT와 LangChain을 사용한 데모 비교 예시입니다. 입력은 "주걸음의 아내는 누구입니까?" 지금 나이에 0.23을 곱한 건가요?" ChatGPT나 GPT-3.5의 답변 결과는 검색 기능이 없기 때문에 잘못된 것으로 볼 수 있습니다. 오른쪽의 OpenAI의 GPT-3.5와 결합된 LangChain을 사용하는 API는 올바른 정보를 점차적으로 검색하여 올바른 결과를 얻게 되며, 중간 프로세스는 프레임워크에 의해 자동으로 처리됩니다. 질문.

2.2.2 자연어를 파이썬 코드로 변환하고 오류를 스스로 수정합니다

이 과정에서 정의되지 않은 함수의 오류를 스스로 찾아서 수정하는 아주 충격적인 예입니다.

ChatGPT 공유-LLM 애플리케이션 개발 방법

ChatGPT 공유-LLM 애플리케이션 개발 방법

2.2.3 GPT-3 + Statmuse + Langchain을 사용하여 NBA 데이터 쿼리

Fuzzy API 구성: GPT-3 + Statmuse + Langchain으로 NBA 통계 쿼리

Langchain을 사용하여 스포츠 관련 웹사이트 검색 데이터를 결합하여 복잡한 데이터 질문을 하고 정확한 답변을 얻으세요. 예: "이 2022-2023 NBA 시즌에 Boston Celtics의 게임당 평균 수비 점수는 얼마입니까? 지난 시즌 평균과 비교하여 백분율 변화는 어떻습니까?"

ChatGPT 공유-LLM 애플리케이션 개발 방법

2.2.4 Connect Python REPL이 브라우저를 엽니다. to play music

멋진 공상과학 장면입니다. Langchain을 사용하여 Python REPL 도구에 연결하고 "play me a song"을 입력했습니다. webBrowser 패키지를 가져오고 코드를 호출하여 브라우저를 열고 재생해 주었습니다. "Never Gonna Give You Up"이라는 노래

def pythonTool():
bash = BashProcess()
python_repl_util = Tool(
"Python REPL",
PythonREPL().run,
"""A Python shell. Use this to execute python commands. 
Input should be a valid python command.
If you expect output it should be printed out.""",
)
command_tool = Tool(
name="bash",
descriptinotallow="""A Bash shell. Use this to execute Bash commands. Input should be a valid Bash command.
If you expect output it should be printed out.""",
func=bash.run,
)
# math_tool = _get_llm_math(llm)
# search_tool = _get_serpapi()
tools = [python_repl_util, command_tool]
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
agent.run("给我播放一首音乐")

ChatGPT 공유-LLM 애플리케이션 개발 방법

2.2.5   连接私有数据

连接私有数据对第三方企业做LLM应用来说非常重要。下面举几个例子

  • LangchainJs的文档,结合了Langchain:AI-powered search for LangchainJS Documentation,你可以直接问文档内容、技术细节。

ChatGPT 공유-LLM 애플리케이션 개발 방법

  • 数据库产品 Supabase也做了同样的事情,将自己的文档与ChatGPT相连接,使得开发者可以很方便的询问/查找自己遇到的技术问题。https://supabase.com/docs

ChatGPT 공유-LLM 애플리케이션 개발 방법

  • 政府信息问答的一个例子:Co-pilot for government

法律公文和政策条款一般都非常复杂繁琐,这个demo中将旧金山政府的信息用Langchain与GPT结合,做到询问其中细节能获得准确回复的效果。

ChatGPT 공유-LLM 애플리케이션 개발 방법

> Entering new AgentExecutor chain...
I need to find out the size limit for a storage shed without a permit and then search for sheds that are smaller than that size.
Action: SF Building Codes QA System
Action Input: "What is the size limit for a storage shed without a permit in San Francisco?"
Observation: The size limit for a storage shed without a permit in San Francisco is 100 square feet (9.29 m2).


Thought:Now that I know the size limit, I can search for sheds that are smaller than 100 square feet.
Action: Google
Action Input: "Storage sheds smaller than 100 square feet"
Observation: Results 1 - 24 of 279 ...


Thought:I need to filter the Google search results to only show sheds that are smaller than 100 square feet and suitable for backyard storage.
Action: Google
Action Input: "Backyard storage sheds smaller than 100 square feet"
Thought:I have found several options for backyard storage sheds that are smaller than 100 square feet and do not require a permit. 
Final Answer: The size limit for a storage shed without a permit in San Francisco is 100 square feet. There are many options for backyard storage sheds that are smaller than 100 square feet and do not require a permit, including small sheds under 36 square feet and medium sheds between 37 and 100 square feet.

2.3   结合私有数据问答

LLM应用与私有数据交互非常重要,我看到无数人在问一些ChatGPT无法回答的问题了:问认不认识谁、问自己公司业务细节、问各种可能不包含在预训练数据集里的东西。这些都已用Langchain和LlaMaIndex来解决。试想一下,将私有数据与LLM相结合,将改变数据原有的访问方式,通过问答能很自然地获取到自己需要的信息,这是比当前的搜索/打标分类都要高效的数据交互方式。

2.3.1   如何构建一个基于私有数据的LLM问答系统

ChatGPT 공유-LLM 애플리케이션 개발 방법

向量数据库现在看起来是构建LLM App中很关键的一个组件。首先 LLM 的预训练和微调过程不可能包含我们所期待的私有数据,因此如何将LLM关联到私有数据成为一个很关键的需求。而且LLM的“接口”-自然语言通常不是像Key-Value的映射那样精确地。而且在这一阶段我们希望LLM去理解我们的知识库,而不是简单的在其中搜索相同的字符串,我们希望询问关于我们知识库的细节,并给出一定理解后的答案(以及来源),这样匹配向量这样的搜索方式是一个非常合适且关键的解决方案。还有一个关键点是,LLM在每次调用是按token计费(即文本量),并且目前的接口的上下文有着4096 tokens的限制。,因此面对庞大的数据,我们也不可能将所有的数据一次性传给LLM。因此才有了第一张图那个流程图的结构。本地预先将我们私有的数据转成向量存在Qdrant里,用户问答时,将用户的问题转为向量,然后去Qdrant里进行搜索(相似性匹配)得到Top K个结果,然后将这些结果(注意这里的结果已经是自然语言了)传给LLM进行总结输出。

2.3.2   结合私有数据问答的抽象流程

这里使用Langchain社区博客的流程图为例

ChatGPT 공유-LLM 애플리케이션 개발 방법

私有数据分割成小于LLM上下文的分块,创建向量后存入向量数据库

ChatGPT 공유-LLM 애플리케이션 개발 방법

将问题计算向量后在向量数据库进行相似性搜索,算出相关性较高的top k个结果后拼接prompt送往LLM获得答案。

2.3.3 중요 구성 요소

  • OpenAI Ada 모델: text-embedding-ada-002 모델은 1536차원 벡터를 빠르게 인코딩할 수 있으며 이 벡터를 사용하여 텍스트 간의 유사성을 계산할 수 있습니다.
  • Langchain / LLamaIndex: Langchain에는 파일 분할과 벡터 데이터베이스에서의 인덱싱을 용이하게 하는 다양한 텍스트 분할기와 문서 커넥터가 포함되어 있습니다. LlamaIndex는 다른 데이터 커넥터와 마찬가지로 벡터 저장소에서 데이터를 로드할 수 있습니다. 그런 다음 이 데이터를 LlamaIndex 데이터 구조에서 사용할 수 있습니다.
  • Vector 데이터베이스에는 Chroma / FAISS / Milvus / PGVector / Qdrant / Pinecone 등 다양한 옵션이 있습니다.

2.3.4 OpenAI 프라이빗 배포 및 비용 문제

최근 OpenAI 프라이빗 배포에 관한 소식을 이야기해 보겠습니다. Langchain을 연결에 사용한다면, 방대한 프라이빗 데이터에 직면하여 임베딩 모델(OpenAI의 ada)을 사용합니다. 계산 문제 벡터를 입력하고 Qdrant와 같은 벡터 데이터베이스를 사용하여 개인 데이터 벡터 및 벡터 검색을 관리하고 Langchain을 중간 링크로 사용하면 문제를 해결할 수 있지만 토큰 소비는 무시할 수 없는 비용 문제입니다. 비공개 배포 + 미세 조정을 통해 앞서 언급한 문제 대부분을 해결할 수 있습니다. 크고 부유한 회사는 Model 인스턴스와 미세 조정을 사용하는 반면, 소규모 회사의 독립 개발자는 Langchain과 같은 프레임워크를 사용할 수 있습니다. 미래에 OpenAI의 LLM 서비스 기능이 오버플로되면 Prompt는 더 이상 필요하지 않을 수도 있고 Langchain의 기능이 포함될 수도 있습니다. LLM 애플리케이션의 개발 및 액세스에는 인터페이스 호출만 필요할 수도 있습니다.

2.4 2023년 LLM 응용 기술 스택

2023 AI 데모를 쉽게 구축하는 데 사용되는 최신 기술 스택:

  • Host: Vercel
  • Front-end: Next.js
  • Back-end: Vercel with 플라스크
  • 데이터베이스: Supabase
  • AI 모델: OpenAI / Replicate / Hugging Face
  • LLM 프레임워크 레이어: LangChain / LLaMaIndex
  • Vector 저장/검색: Pinecone / FAISS

2.5 Prompt-Ops 현재 가장 큰 문제

일부 Langchain에 대한 이러한 메시지 - Ops와 같은 도구에 대한 반대: stream.thesephist.com 주요 문제는 이러한 도구/프레임워크에서 코드와 LLM 간의 연결로 자연 언어를 사용하고 비결정적 사용을 사용하는 것이 약간 이상하다는 것입니다. 언어 자체가 제어 흐름입니다. 더욱이, 모델 출력 효과 자체를 평가하는 것은 이제 매우 번거로운 작업입니다. 많은 사람들이 거대한 스프레드시트를 유지하고 이를 평가하기 위해 사람에게 의존합니다. (LLM을 활용해 LLM을 평가할 계획도 있는데, 아직은 상대적으로 초기 단계다.) 따라서 트위터 시연보다는 실제 사용자와 직접 대면하고 프로덕션에 투입되기까지는 아직 해야 할 일이 많을 수 있다.

테스트 단계에서 직면한 엄청난 어려움에 대해 자세히 이야기해 보겠습니다. 제품에 개발 단계에서 잘 작동하는 일련의 프롬프트가 있는 경우 테스트를 위해 전달된 후 수백 또는 수천 개의 프롬프트를 테스트하여 문제를 식별할 수 있습니다. 효과를 보장할 수 없기 때문에 실제로 c-end 사용자에게 출시하기에는 큰 어려움에 직면하게 될 것입니다. 또한 미세 조정 서비스나 모델 인스턴스를 사용하지 않는 경우 OpenAI가 모델을 업데이트하면 프로덕션 환경의 모든 프롬프트를 다시 테스트하여 적용해야 할 수도 있습니다. 프롬프트도 코드와 마찬가지로 버전별로 관리해야 합니다. 프롬프트 변경 여부에 관계없이 각 버전은 온라인에 접속하기 전에 회귀 테스트를 거쳐야 합니다. 우수한 자동 평가 솔루션이 없으면 수많은 사례를 수동으로 테스트해야 하므로 많은 인력이 소모됩니다.

현재 개인 데이터를 결합하는 LLM 응용 프로그램을 개발하기 위한 좋은 엔지니어링 솔루션이 많이 있습니다. 데모를 실행하여 좋은 결과를 얻는 것은 쉽지만 이러한 응용 프로그램은 여전히 ​​주의해서 다루어야 합니다. 결국 우리는 단지 소셜 미디어나 리더들 앞에서 시연하기 위한 프로젝트를 하는 것이 아닙니다. 사용자에게 입력을 위해 제공되는 것은 대화 상자입니다. 자연어는 너무 광범위해서 수만 개의 결과를 테스트하더라도 결국 예상치 못한 결과가 발생할 수 있습니다. new bing 및 chatGPT와 같은 제품도 삽입하라는 메시지가 표시됩니다. 이러한 불확실성에 직면하여 엔지니어링에서 이를 방지하는 방법과 테스트에서 이를 다루는 방법은 모두 성숙한 제품에 대해 해결해야 할 문제이거나 여전히 수행할 수 있는 작업이 많습니다.

하지만 이러한 유형의 Prompt-Ops 도구/프레임워크를 완전히 거부할 필요는 없다고 생각합니다. 결국 이 단계에서 아이디어를 검증하기 위해 좋은 데모를 많이 만들 수 있습니다.

3 미래에 가능한 제품 형태

ChatGPT API가 공개된 후 LLM 응용 프로그램의 가능한 형태에 대해 이야기해 보겠습니다.

  • 대화채팅은 가장 직관적인 적용방식이며, 대화내역은 API로 관리됩니다.
  • 가상 캐릭터 채팅은 기본 대화 채팅을 기반으로 API의 prefix_message에 캐릭터 정의 프롬프트를 만들어 Character.ai와 유사한 효과를 얻습니다. 더 깊이 들어가면 게임 캐릭터, 가상 인물, XR 도우미 등이 될 수 있습니다.
  • Notion과 유사한 텍스트 지원 쓰기 도구입니다. 현재 Notion과 FlowUs에는 유사한 애플리케이션이 있습니다. 앞으로는 다양한 커뮤니티의 출판사 통합도 추세가 되어 사용자 출판의 문턱이 낮아지고 출판의 질이 향상될 것입니다.
  • 데이터 요약 도구는 Chat-Your-Data를 구현하고 사용자에게 문서 입력을 제공하며 사용자가 제공한 데이터와 채팅할 수 있도록 합니다. 본질적으로 인터넷상의 공개 데이터와 사용자의 개인 데이터만 포함됩니다.
  • 대기업을 위한 Chat-Your-Data 각 대기업의 개인 데이터를 결합하여 본연의 사업을 기반으로 더 나은 서비스를 제공합니다. 예를 들어, 사용자 리뷰를 통합하는 Dianping에서는 "네오 소울과 R&B 음악이 나오는 바에 가고 싶습니다."라는 메시지를 사용할 수 있습니다. 예를 들어 당사의 비즈니스 세부 정보 페이지에서는 이 제품에 대한 모든 사용자의 평가를 요약하고 사용자가 이 제품에 대한 정보를 제공하세요.
  • 정부 업무, 의료, 교육 및 기타 분야를 통합하고, 기관의 온라인 공식 웹사이트와 오프라인 대형 스크린을 통합하여 더 나은 시민 서비스를 제공합니다.
  • IFTTT 또는 다양한 개인 프로토콜과 같은 다른 도구와 결합하여 LLM은 IoT 시나리오, Office Copilot과 같은 더 많은 도구 및 시스템에 액세스할 수 있습니다.

LLM 애플리케이션은 실제로 사용자가 자연어를 사용하여 현재 시스템과 통신할 수 있는 새로운 방식의 인간-컴퓨터 상호 작용입니다. 많은 애플리케이션을 단 하나의 채팅 창으로 단순화할 수도 있습니다.

4 요약

현재 일반 대형 모델 훈련/배포 비용이 높기 때문에 산업 수준의 분업 조건은 기본적으로 성숙되어 있으며 전 세계적으로 대형 모델이 많이 필요하지 않으며 LLM 응용 프로그램은 기업과 개인 개발자에게는 필연적인 선택입니다. 새로운 형태의 프로그래밍/엔지니어링 패러다임에서는 엔지니어가 이를 적시에 배우고 이해해야 합니다. 현재 오픈 소스 기술 스택은 이미 대부분의 제품의 요구 사항을 충족할 수 있습니다. 빠른 데모를 통해 아이디어를 확인할 수 있습니다.

참고 자료:

  • https://blog.langchain.dev/tutorial-chatgpt-over-your-data/

튜토리얼: 데이터에 대한 ChatGPT

  • https://qdrant.tech/articles/ LANGChain -통합/

bithout Boilerplate를 사용하여 Langchain 및 QDrant로 답변

  • https: //mp.weixin.qq.com/s/vz6n4bh41yvd1yvd1hqgq

Atom AL: ChatGPT가 가져온 심층적인 산업 변화

위 내용은 ChatGPT 공유-LLM 애플리케이션 개발 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제