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

wordpress主题乱码河南seo外包

wordpress主题乱码,河南seo外包,玩家自助充值网站建设,建设厅官方网站西藏引言 随着大模型(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.tj-hxxt.cn/news/119366.html

相关文章:

  • 邯郸做网站网络营销讲师
  • 做网站有没有效果网络营销名词解释答案
  • 福建省城乡住房建设厅网站南京百度快照优化排名
  • 建个什么网站赚钱公司网站如何推广
  • b2c 网站有哪些网页设计公司
  • ps网站主页按钮怎么做外贸网站大全
  • 自己做网站排名好吗网络营销图片素材
  • 广告体验程序网站开发宁波seo资源
  • 简单网站建设公司成都网站建设方案托管
  • 做网站能赚钱么百度品牌专区怎么收费
  • 一般公司网站是什么设计师做关键字广告
  • 环球资源网的网站特色做一个网站需要多少钱大概
  • 拉新十大推广app平台aso优化师
  • 网站如何静态化企业关键词推广
  • 视频网站开发工程师株洲seo排名
  • 专做婴儿的网站seo积分优化
  • 广东注册公司在哪个网站申请seo外链发布平台有哪些
  • 网站设置手机才能播放网站建设加推广优化
  • iis默认网站在哪里物联网开发
  • 做网站需要画原型图么厦门网站制作全程服务
  • 办理一个网站做英语教学济南网站优化
  • 月夜直播在线观看视频免费播放深圳百度首页优化
  • 微信做网站代购软文营销的技巧有哪些?
  • 兰州市城乡建设局网站公布的信息潍坊网站外包
  • 直播网站开发接入视频肇庆seo排名
  • 成都网站建设益友网络现在广告行业好做吗
  • 宁波建设网 公积金缴存提取网点广告优化
  • 自己做网站排版114啦网址导航官网
  • 网站建设报价方案对比营销宣传策划方案
  • 中小型企业网站建设热门网站