当前位置: 首页 > news >正文

购物网站开发背景需求湖南人工智能建站系统软件

购物网站开发背景需求,湖南人工智能建站系统软件,个人身份调查网站,苏州网站设计服务引言 随着大模型(LLM)的崛起,特别是ChatGPT等大模型的广泛应用,基于LLM的系统越来越受欢迎。然而,尽管大模型具备强大的生成能力和推理能力,它们在处理某些专有领域或实时问题时仍然存在局限性。因此&#…
引言

        随着大模型(LLM)的崛起,特别是ChatGPT等大模型的广泛应用,基于LLM的系统越来越受欢迎。然而,尽管大模型具备强大的生成能力和推理能力,它们在处理某些专有领域或实时问题时仍然存在局限性。因此,结合工具和Agent的概念,增强大模型的实时交互能力,成为解决问题的关键方法。

        本文将从零开始,手动构建一个基于React方式的最小化Agent结构,我们称之为TinyAgent。本文会展示如何通过结合LLM与外部工具的方式,赋予大模型实时处理问题的能力。

实现细节
Step 1: 构建大模型

        首先,我们需要加载一个大模型作为核心,这里我们选择InternLM2模型。InternLM2是一个Decoder-Only的对话大模型,具备较强的生成能力。我们可以使用transformers库来加载并运行该模型。

        首先,我们定义一个通用的大模型基类BaseModel,该类用于加载模型和处理输入输出。

class BaseModel:def __init__(self, path: str = '') -> None:self.path = pathdef chat(self, prompt: str, history: List[dict]):passdef load_model(self):pass

        然后,我们实现一个继承自BaseModel的类InternLM2Chat,这个类实现了具体的模型加载和与模型对话的方法。

class InternLM2Chat(BaseModel):def __init__(self, path: str = '') -> None:super().__init__(path)self.load_model()def load_model(self):print('================ Loading model ================')self.tokenizer = AutoTokenizer.from_pretrained(self.path, trust_remote_code=True)self.model = AutoModelForCausalLM.from_pretrained(self.path, torch_dtype=torch.float16, trust_remote_code=True).cuda().eval()print('================ Model loaded ================')def chat(self, prompt: str, history: List[dict], meta_instruction: str = '') -> str:response, history = self.model.chat(self.tokenizer, prompt, history, temperature=0.1, meta_instruction=meta_instruction)return response, history
Step 2: 构造工具

        接下来,我们定义工具类,支持外部功能的调用,比如Google搜索。通过这些工具,可以扩展大模型的能力,从而处理实时或专有领域的任务。

        我们首先定义工具的描述信息,并在类Tools中实现具体的工具操作。

class Tools:def __init__(self) -> None:self.toolConfig = self._tools()def _tools(self):tools = [{'name_for_human': '谷歌搜索','name_for_model': 'google_search','description_for_model': '谷歌搜索是一个通用搜索引擎,可用于访问互联网、查询百科知识、了解时事新闻等。','parameters': [{'name': 'search_query','description': '搜索关键词或短语','required': True,'schema': {'type': 'string'},}],}]return toolsdef google_search(self, search_query: str):url = "https://google.serper.dev/search"payload = json.dumps({"q": search_query})headers = {'X-API-KEY': '你的API_KEY','Content-Type': 'application/json'}response = requests.request("POST", url, headers=headers, data=payload).json()return response['organic'][0]['snippet']
Step 3: 构建Agent

        接下来,我们创建一个Agent类,实现ReAct(Reasoning and Acting)范式的Agent。这个Agent可以通过LLM处理输入,并在需要时调用工具。

        我们需要构造system_prompt,让模型了解可以使用哪些工具,以及如何调用这些工具。

class Agent:def __init__(self, path: str = '') -> None:self.path = pathself.tool = Tools()self.system_prompt = self.build_system_input()self.model = InternLM2Chat(path)def build_system_input(self):tool_descs, tool_names = [], []for tool in self.tool.toolConfig:tool_descs.append(TOOL_DESC.format(**tool))tool_names.append(tool['name_for_model'])tool_descs = '\n\n'.join(tool_descs)tool_names = ','.join(tool_names)sys_prompt = REACT_PROMPT.format(tool_descs=tool_descs, tool_names=tool_names)return sys_prompt

        通过system_prompt,我们告知模型可以使用哪些工具,以及如何格式化输入输出。

        然后,我们实现一个解析工具调用的逻辑,模型通过解析用户输入决定何时调用工具,并将结果返回。

def parse_latest_plugin_call(self, text):plugin_name, plugin_args = '', ''i = text.rfind('\nAction:')j = text.rfind('\nAction Input:')k = text.rfind('\nObservation:')if 0 <= i < j:  # 如果包含Action和Action Inputif k < j:  # 且没有Observationtext = text.rstrip() + '\nObservation:'  # 添加Observationk = text.rfind('\nObservation:')plugin_name = text[i + len('\nAction:') : j].strip()plugin_args = text[j + len('\nAction Input:') : k].strip()text = text[:k]return plugin_name, plugin_args, text

        最后,整合工具调用和LLM的生成过程。

def text_completion(self, text, history=[]):text = "\nQuestion:" + textresponse, his = self.model.chat(text, history, self.system_prompt)print(response)plugin_name, plugin_args, response = self.parse_latest_plugin_call(response)if plugin_name:response += self.call_plugin(plugin_name, plugin_args)response, his = self.model.chat(response, history, self.system_prompt)return response, his
Step 4: 运行Agent

        最后,运行我们的Agent,测试其功能。

if __name__ == '__main__':agent = Agent('/root/share/model_repos/internlm2-chat-7b')response, _ = agent.text_completion(text='周杰伦是哪一年出生的?', history=[])print(response)response, _ = agent.text_completion(text='周杰伦是谁?', history=[])print(response)
结语

        通过本文的讲解,我们从零开始构建了一个最小化的Agent系统。我们一步一步地实现了如何结合大语言模型(LLM)与外部工具来增强大模型的实际应用能力。尽管大语言模型在很多任务中展现出了惊人的能力,但在面对特定领域的专有任务或实时性要求较高的场景时,单靠语言模型可能会表现不足。Agent系统的核心理念就是让大模型能够借助外部工具(如搜索引擎、数据库等)来完成更加复杂和个性化的任务。

        在本项目中,我们基于React范式设计了一个简单的Agent,通过提供工具描述与交互模板,让模型可以理解如何合理调用外部工具。在我们的示例中,模型能够调用Google搜索引擎来获取实时信息,从而补充大模型在某些领域的知识盲点。这种方式大大拓展了大模型的应用边界,不再仅仅依赖于模型参数内的知识,而是能够动态连接外部信息资源。

Agent系统的意义
  1. 增强信息获取能力:通过工具接口,模型可以即时获取最新信息或查询外部资源,从而突破模型知识更新滞后的局限性。
  2. 提高任务处理效率:Agent能够通过合理地调用外部工具,更加快速、准确地完成复杂任务。
  3. 灵活扩展性:我们构建的系统框架具备高度的扩展性,后续可以通过简单的工具插件接口,轻松接入其他任务场景,如金融数据分析、地理信息查询等。
  4. 实现智能决策:通过多次推理和工具调用,Agent能够像人类一样通过多步推理,获得更符合问题背景的答案,而不是单一的响应。

        通过手搓这个TinyAgent,我们不仅熟悉了ReAct范式的原理与实现,还学习了如何通过系统提示与多次推理循环,让大模型具备更强的推理与行动能力。在未来,我们可以进一步优化该框架,将其应用到更广泛的场景中,如智能客服、实时金融预测、医疗信息查询等。

        最后,构建Agent系统为大模型的应用开辟了新的可能性,它不仅提升了大模型的智能化水平,也为探索更复杂的任务提供了技术基础。希望本文的讲解能够帮助你深入理解Agent的运作机制,并激发更多关于大模型与工具结合的创新思路。

如果你觉得这篇博文对你有帮助,请点赞、收藏、关注我,并且可以打赏支持我!

欢迎关注我的后续博文,我将分享更多关于人工智能、自然语言处理和计算机视觉的精彩内容。

谢谢大家的支持!

http://www.yayakq.cn/news/601658/

相关文章:

  • 高校网站建设说明书wordpress搜索函数
  • 3d建模培训学校wordpress 文章seo
  • 网站清除数据库怀化网站定制
  • 鄢陵网站建设电脑建站在做网站的公司做网站运营犯法吗
  • 母婴网站dede织梦电子商务网站建设的书
  • 孝感个人网站建设响应式网页设计最方便快速
  • 网站留言短信提醒网页设计心得体会800字
  • 怎么样免费建网站钢结构工程外包项目网
  • 网站内容建设运维服务器广州网站建设兼职
  • 南昌 提供网站设计 公司有哪些推广平台
  • 网站绿标怎么做网站建设开发方式包括
  • 企业网站的类型包括个人网站 作品
  • 最新淘宝客网站程序建立客户档案表格模板
  • 嘉兴网站建设推荐浙江华企建设游戏网站目的及其定位
  • 企业门户网站数据库设计非洲跨境电商平台有哪些
  • 网站设计与网页制作岗位招聘信息贵州建设网老网站
  • wordpress4.9.8有中文版系统优化的意义
  • 百度站长对网站会有影响吗极家装修口碑好不好
  • 网站建设上海网站建设个人简历电子版填写免费模板
  • 网站后台的文章怎么做深圳推广
  • 网站开发与维护宣传册wordpress wp super cache
  • 成都科技网站建设找哪家施工企业入外省名单公示
  • 北京百度糯米团购有做网站的电话吗做推广什么网站好
  • 海报设计素材网站免费成立公司有什么好处和坏处
  • 建设银行网站登录不上一个人看的片免费高清大全
  • 敦煌网站建设wordpress音乐外链
  • 做网站在网页设计导航栏代码怎么写
  • 网站推广策划案效果好网站建设合同定义
  • 汕头高端网站开发汉中网站设计
  • 多久可以做网站什么样的网站利于seo