ChatGPT는 업계에 큰 충격을 주었고, 각계각층에서 대규모 언어 모델과 일반 인공지능을 논의하고 있습니다. AI는 50여년의 발전을 거쳐 지금은 산업구조의 수평적 발전의 중요한 시기를 맞이하고 있습니다. 이러한 변화는 "사전 훈련 + 미세 조정"에서 "사전 훈련, 프롬프트 및 예측"으로 진화한 NLP 분야의 패러다임 전환에서 비롯됩니다. 이 새로운 모델에서는 다운스트림 작업이 사전 훈련된 모델에 맞춰 조정되므로 대규모 모델이 여러 작업에 적합해집니다. 이러한 변화는 AI 산업에서 수평적 분업의 기반을 마련했고, 대형 언어 모델이 인프라화되면서 사용자와 모델을 연결하는 데 주력하는 프롬프트엔지니어링(Prompt Engineering) 기업이 속속 등장했다. AI 산업의 노동 분업은 기본 인프라(클라우드 서비스 공급자), 대형 모델, 프롬프트 엔지니어링 플랫폼 및 터미널 애플리케이션을 포함하여 초기에 구체화되었습니다. AI 산업이 변화함에 따라 개발자는 LLM(대형 언어 모델) 및 Prompt Engineering을 최대한 활용하여 혁신적인 애플리케이션을 개발할 수 있습니다.
현재 LLM을 기반으로 애플리케이션을 개발해야 합니다. 우리가 직면한 가장 큰 엔지니어링 문제는 무엇입니까?
간단히 말하면 Langchain을 예로 들어보겠습니다. LangChain은 LLM의 기본 기능을 캡슐화한 것이며 일종의 Prompt Engineering 또는 Prompt-Ops입니다.
이것은 ChatGPT와 LangChain을 사용한 데모 비교 예시입니다. 입력은 "주걸음의 아내는 누구입니까?" 지금 나이에 0.23을 곱한 건가요?" ChatGPT나 GPT-3.5의 답변 결과는 검색 기능이 없기 때문에 잘못된 것으로 볼 수 있습니다. 오른쪽의 OpenAI의 GPT-3.5와 결합된 LangChain을 사용하는 API는 올바른 정보를 점차적으로 검색하여 올바른 결과를 얻게 되며, 중간 프로세스는 프레임워크에 의해 자동으로 처리됩니다. 질문.
이 과정에서 정의되지 않은 함수의 오류를 스스로 찾아서 수정하는 아주 충격적인 예입니다.
Fuzzy API 구성: GPT-3 + Statmuse + Langchain으로 NBA 통계 쿼리
Langchain을 사용하여 스포츠 관련 웹사이트 검색 데이터를 결합하여 복잡한 데이터 질문을 하고 정확한 답변을 얻으세요. 예: "이 2022-2023 NBA 시즌에 Boston Celtics의 게임당 평균 수비 점수는 얼마입니까? 지난 시즌 평균과 비교하여 백분율 변화는 어떻습니까?"
멋진 공상과학 장면입니다. 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("给我播放一首音乐")
连接私有数据对第三方企业做LLM应用来说非常重要。下面举几个例子
法律公文和政策条款一般都非常复杂繁琐,这个demo中将旧金山政府的信息用Langchain与GPT结合,做到询问其中细节能获得准确回复的效果。
> 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.
LLM应用与私有数据交互非常重要,我看到无数人在问一些ChatGPT无法回答的问题了:问认不认识谁、问自己公司业务细节、问各种可能不包含在预训练数据集里的东西。这些都已用Langchain和LlaMaIndex来解决。试想一下,将私有数据与LLM相结合,将改变数据原有的访问方式,通过问答能很自然地获取到自己需要的信息,这是比当前的搜索/打标分类都要高效的数据交互方式。
向量数据库现在看起来是构建LLM App中很关键的一个组件。首先 LLM 的预训练和微调过程不可能包含我们所期待的私有数据,因此如何将LLM关联到私有数据成为一个很关键的需求。而且LLM的“接口”-自然语言通常不是像Key-Value的映射那样精确地。而且在这一阶段我们希望LLM去理解我们的知识库,而不是简单的在其中搜索相同的字符串,我们希望询问关于我们知识库的细节,并给出一定理解后的答案(以及来源),这样匹配向量这样的搜索方式是一个非常合适且关键的解决方案。还有一个关键点是,LLM在每次调用是按token计费(即文本量),并且目前的接口的上下文有着4096 tokens的限制。,因此面对庞大的数据,我们也不可能将所有的数据一次性传给LLM。因此才有了第一张图那个流程图的结构。本地预先将我们私有的数据转成向量存在Qdrant里,用户问答时,将用户的问题转为向量,然后去Qdrant里进行搜索(相似性匹配)得到Top K个结果,然后将这些结果(注意这里的结果已经是自然语言了)传给LLM进行总结输出。
这里使用Langchain社区博客的流程图为例
私有数据分割成小于LLM上下文的分块,创建向量后存入向量数据库
将问题计算向量后在向量数据库进行相似性搜索,算出相关性较高的top k个结果后拼接prompt送往LLM获得答案。
최근 OpenAI 프라이빗 배포에 관한 소식을 이야기해 보겠습니다. Langchain을 연결에 사용한다면, 방대한 프라이빗 데이터에 직면하여 임베딩 모델(OpenAI의 ada)을 사용합니다. 계산 문제 벡터를 입력하고 Qdrant와 같은 벡터 데이터베이스를 사용하여 개인 데이터 벡터 및 벡터 검색을 관리하고 Langchain을 중간 링크로 사용하면 문제를 해결할 수 있지만 토큰 소비는 무시할 수 없는 비용 문제입니다. 비공개 배포 + 미세 조정을 통해 앞서 언급한 문제 대부분을 해결할 수 있습니다. 크고 부유한 회사는 Model 인스턴스와 미세 조정을 사용하는 반면, 소규모 회사의 독립 개발자는 Langchain과 같은 프레임워크를 사용할 수 있습니다. 미래에 OpenAI의 LLM 서비스 기능이 오버플로되면 Prompt는 더 이상 필요하지 않을 수도 있고 Langchain의 기능이 포함될 수도 있습니다. LLM 애플리케이션의 개발 및 액세스에는 인터페이스 호출만 필요할 수도 있습니다.
2.4 2023년 LLM 응용 기술 스택
2023 AI 데모를 쉽게 구축하는 데 사용되는 최신 기술 스택:
일부 Langchain에 대한 이러한 메시지 - Ops와 같은 도구에 대한 반대: stream.thesephist.com 주요 문제는 이러한 도구/프레임워크에서 코드와 LLM 간의 연결로 자연 언어를 사용하고 비결정적 사용을 사용하는 것이 약간 이상하다는 것입니다. 언어 자체가 제어 흐름입니다. 더욱이, 모델 출력 효과 자체를 평가하는 것은 이제 매우 번거로운 작업입니다. 많은 사람들이 거대한 스프레드시트를 유지하고 이를 평가하기 위해 사람에게 의존합니다. (LLM을 활용해 LLM을 평가할 계획도 있는데, 아직은 상대적으로 초기 단계다.) 따라서 트위터 시연보다는 실제 사용자와 직접 대면하고 프로덕션에 투입되기까지는 아직 해야 할 일이 많을 수 있다.
테스트 단계에서 직면한 엄청난 어려움에 대해 자세히 이야기해 보겠습니다. 제품에 개발 단계에서 잘 작동하는 일련의 프롬프트가 있는 경우 테스트를 위해 전달된 후 수백 또는 수천 개의 프롬프트를 테스트하여 문제를 식별할 수 있습니다. 효과를 보장할 수 없기 때문에 실제로 c-end 사용자에게 출시하기에는 큰 어려움에 직면하게 될 것입니다. 또한 미세 조정 서비스나 모델 인스턴스를 사용하지 않는 경우 OpenAI가 모델을 업데이트하면 프로덕션 환경의 모든 프롬프트를 다시 테스트하여 적용해야 할 수도 있습니다. 프롬프트도 코드와 마찬가지로 버전별로 관리해야 합니다. 프롬프트 변경 여부에 관계없이 각 버전은 온라인에 접속하기 전에 회귀 테스트를 거쳐야 합니다. 우수한 자동 평가 솔루션이 없으면 수많은 사례를 수동으로 테스트해야 하므로 많은 인력이 소모됩니다.
현재 개인 데이터를 결합하는 LLM 응용 프로그램을 개발하기 위한 좋은 엔지니어링 솔루션이 많이 있습니다. 데모를 실행하여 좋은 결과를 얻는 것은 쉽지만 이러한 응용 프로그램은 여전히 주의해서 다루어야 합니다. 결국 우리는 단지 소셜 미디어나 리더들 앞에서 시연하기 위한 프로젝트를 하는 것이 아닙니다. 사용자에게 입력을 위해 제공되는 것은 대화 상자입니다. 자연어는 너무 광범위해서 수만 개의 결과를 테스트하더라도 결국 예상치 못한 결과가 발생할 수 있습니다. new bing 및 chatGPT와 같은 제품도 삽입하라는 메시지가 표시됩니다. 이러한 불확실성에 직면하여 엔지니어링에서 이를 방지하는 방법과 테스트에서 이를 다루는 방법은 모두 성숙한 제품에 대해 해결해야 할 문제이거나 여전히 수행할 수 있는 작업이 많습니다.
하지만 이러한 유형의 Prompt-Ops 도구/프레임워크를 완전히 거부할 필요는 없다고 생각합니다. 결국 이 단계에서 아이디어를 검증하기 위해 좋은 데모를 많이 만들 수 있습니다.
ChatGPT API가 공개된 후 LLM 응용 프로그램의 가능한 형태에 대해 이야기해 보겠습니다.
LLM 애플리케이션은 실제로 사용자가 자연어를 사용하여 현재 시스템과 통신할 수 있는 새로운 방식의 인간-컴퓨터 상호 작용입니다. 많은 애플리케이션을 단 하나의 채팅 창으로 단순화할 수도 있습니다.
현재 일반 대형 모델 훈련/배포 비용이 높기 때문에 산업 수준의 분업 조건은 기본적으로 성숙되어 있으며 전 세계적으로 대형 모델이 많이 필요하지 않으며 LLM 응용 프로그램은 기업과 개인 개발자에게는 필연적인 선택입니다. 새로운 형태의 프로그래밍/엔지니어링 패러다임에서는 엔지니어가 이를 적시에 배우고 이해해야 합니다. 현재 오픈 소스 기술 스택은 이미 대부분의 제품의 요구 사항을 충족할 수 있습니다. 빠른 데모를 통해 아이디어를 확인할 수 있습니다.
참고 자료:
튜토리얼: 데이터에 대한 ChatGPT
bithout Boilerplate를 사용하여 Langchain 및 QDrant로 답변
Atom AL: ChatGPT가 가져온 심층적인 산업 변화
위 내용은 ChatGPT 공유-LLM 애플리케이션 개발 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!