LLM应用实战: 给个公司简称,输出公司全称

LLM应用实战-公司简称输出公司全称 本qiang~本周在处理手头项目工作的时候,遇到了一个问题,就是友方提供了一个公司名称列表(量不小~,因此无法人工处理),且该公司名称列表均为简称,需要与库中的全称做一个映射匹配。看似简单的一个需求,但传统的技术手段貌似都无法派上用场,比如语义相似度,文本编辑距离等等。因此本qiang花费了半天的时间思考并解决了该任务,遂将工作记录如下,且本着开放共享,将核心源码进行公开,欢迎讨论~ 阅读详情

本人的微信公众号是"爱学习的妮妮qiang",欢迎订阅~

1.背景

本qiang~本周在处理手头项目工作的时候,遇到了一个问题,就是友方提供了一个公司名称列表(量不小~,因此无法人工处理),且该公司名称列表均为简称,需要与库中的全称做一个映射匹配。

看似简单的一个需求,但传统的技术手段貌似都无法派上用场,比如语义相似度,文本编辑距离等等。

因此本qiang花费了半天的时间思考并解决了该任务,遂将工作记录如下,且本着开放共享,将核心源码进行公开,欢迎讨论~

2.整体框架

其实,原理也非常简单,由于本地数据库缺乏公司的完整信息,但可以借助互联网资源来搜索公司的相关信息,比如官网介绍、天眼查等来源,然后将检索后的结果通过大模型自带的推理能力输出最终结果。

本文中使用的搜索引擎是duckduckgo_search(需要科学上网),大模型调用使用的duckduckgo_search内部集成的gpt-4o-mini(理论上只要能科学上网,即可免费使用gpt-4o-mini)。

3. 效果展示

AutoX

深圳安途智行科技有限公司

Cosmose

翱觅苷(上海)信息科技有限公司

Magic Data

北京晴数智慧科技有限公司

Minimax

名之梦(上海)科技有限公司

Momenta

北京初速度科技有限公司

Testin云测

北京云测信息技术有限公司

一流科技

一流科技有限公司

三六零

三六零安全科技股份有限公司

东杰智能

东杰智能科技集团股份有限公司

东软

东软集团股份有限公司

中心通讯

中兴通讯股份有限公司

中科创达

中科创达软件股份有限公司

中科曙光

曙光信息产业股份有限公司

中科视拓

中科视拓(北京)科技有限公司

中译语通

中译语通科技股份有限公司

九四智能

广州九四智能科技有限公司

九章云极

北京九章云极科技有限公司

云天励飞

深圳云天励飞技术股份有限公司

云徙科技

广州云徙科技有限公司

亚信科技

亚信科技控股有限公司

4. 全部源码

由于调用检索相对耗时,因此分为公司简称检索和公司全称提取两个模块

4.1公司简称检索

from duckduckgo_search import DDGS
import json
import time

def save_datas(file_path, datas, json_flag=True, all_flag=False, with_indent=False, mode='w'):
    """保存文本文件"""
    with open(file_path, mode, encoding='utf-8') as f:
        if all_flag:
            if json_flag:
                f.write(json.dumps(datas, ensure_ascii=False, indent= 4 if with_indent else None))
            else:
                f.write(''.join(datas))
        else:
            for data in datas:
                if json_flag:
                    f.write(json.dumps(data, ensure_ascii=False) + '\n') 
                else:
                    f.write(data + '\n')


def search_companies(companies):
    results = []
    for company in companies:
        if '公司' in company:
            results.append({
                'company': company,
                'search_results': 'company'
            })
            continue
        text = f'{company} 公司名全称'
        
        search_results = None
        while search_results is None:
            try:
                search_results = DDGS().text(text, max_results=10)
                if search_results: break
            except Exception as e:
                print('sleep 2s')
                time.sleep(2)
                continue
        results.append({
            'company': company,
            'search_results': search_results
        })
        time.sleep(2)
    save_datas('data/公司简称检索结果.json', results)


def get_datas(file_path, json_flag=True, all_flag=False, mode='r'):
    """读取文本文件"""
    results = []
    
    with open(file_path, mode, encoding='utf-8') as f:
        for line in f.readlines():
            if json_flag:
                results.append(json.loads(line))
            else:
                results.append(line.strip())
        if all_flag:
            if json_flag:
                return json.loads(''.join(results))
            else:
                return '\n'.join(results)
        return results
    

if __name__ == '__main__':
    search_companies(get_datas('data/公司简称列表.txt', json_flag=False))

4.2公司全名提取


from duckduckgo_search import DDGS
import json
import time


PROMPT = """你是一个助手,你的任务是基于输入的公司名简称以及搜索结果,分析并提取出公司名简称对应的公司名全称。要求如下:
1. "简称"是公司名简称,"搜索结果"是基于互联网的搜索后的资源,需要根据"简称"和"搜索结果"进行分析,并输出公司全称,如果无法确认,请返回"无";
2. 如果检索结果不包含公司全称,请基于你所学习的知识可以进一步判断; 
3. 输出结果只包含公司名的全称信息,且只能包含一个,不需要输出解释信息;
4. 输入的公司名简称均是科技领域的知名公司,这点请注意;

示例:
简称: 京东
搜索结果:
1. 京东(中国1998年创立的自营式电商企业)_百度百科\n京东(股票代码:jd),中国自营式电商企业,创始人刘强东初期担任京东集团董事局主席兼首席执行官,2021年9月,徐雷获任集团总裁。京东旗下设有京东商城、京东金融、拍拍网、京东智能、o2o及海外事业部等。1998年6月18日,刘强东在 中关村成立京东公司。
2. 京东集团 - 维基百科,自由的百科全书\n东集团. 京东集团 (NASDAQ: JD 、 港交所: 9618 、 港交所: 89618 (人民幣結算)),前稱 360buy 和 京東商城,由刘强东于1998年6月18日创立,是一家总部位于 北京 的 中国 电子商务公司,主要為 B2C 模式的購物網站 。. 2014年,京东集团在 美国 纳斯达克证券交易 ...
3. 京东集团股份有限公司 - 爱企查\n简介: 京东集团股份有限公司(JD.com, Inc.)于2006年11月6日在在英属维尔京群岛注册成立的公司,通过中国境内的子公司和VIE开展经营活动,公司总部位于北京。. 京东是专业的综合性网上购物商城,是中国B2C市场最大的3C网购专业平台,是中国电子商务领域最受 ...
输出: 京东集团股份有限公司

现在,请按照要求完成:
简称: {company_name}
搜索结果: {search_results}
输出: 
"""

def save_datas(file_path, datas, json_flag=True, all_flag=False, with_indent=False, mode='w'):
    """保存文本文件"""
    with open(file_path, mode, encoding='utf-8') as f:
        if all_flag:
            if json_flag:
                f.write(json.dumps(datas, ensure_ascii=False, indent= 4 if with_indent else None))
            else:
                f.write(''.join(datas))
        else:
            for data in datas:
                if json_flag:
                    f.write(json.dumps(data, ensure_ascii=False) + '\n') 
                else:
                    f.write(data + '\n')

def get_datas(file_path, json_flag=True, all_flag=False, mode='r'):
    """读取文本文件"""
    results = []
    
    with open(file_path, mode, encoding='utf-8') as f:
        for line in f.readlines():
            if json_flag:
                results.append(json.loads(line))
            else:
                results.append(line.strip())
        if all_flag:
            if json_flag:
                return json.loads(''.join(results))
            else:
                return '\n'.join(results)
        return results
    


def get_company_full_names():
    results = []
    for ele in get_datas('data/公司简称检索结果.json'):
        company_name = ele['company']
        search_results = ele['search_results']
        if isinstance(search_results, str):
            results.append(f'{company_name}\t{company_name}')
            continue
        
        prompt = PROMPT.format(company_name=company_name, search_results=search_results)
        result = ''
        while result == '':
            try:
                result = DDGS().chat(prompt, model='gpt-4o-mini')
                if result.strip(): break
            except Exception as e:
                time.sleep(2)
                continue
        results.append(f'{company_name}\t{result}')
    save_datas('data/公司全称提取结果.txt', results, json_flag=False)

if __name__ == '__main__':
    get_company_full_names()

5.总结

一句话足矣~

开发了一款基于公司简称补全公司全称的工具,包括具体的框架、实现原理以及完整源码,满满诚意,提供给各位看官。欢迎转发、订阅~有问题可以私信或留言沟通!

虽然需求比较简单,且实现过程也比较简单,但通过搜索引擎搜素以及大模型的各种奇技淫巧,相信可以完成更加复杂且效果惊艳的项目。

有兴趣的客官可以进行沟通合作,感谢~

6.参考

  1. Duckduckgo_search:  GitHub - deedy5/duckduckgo_search: Search for words, documents, images, videos, news, maps and text translation using the DuckDuckGo.com search engine. Downloading files and images to a local hard drive.Search for words, documents, images, videos, news, maps and text translation using the DuckDuckGo.com search engine. Downloading files and images to a local hard drive. - deedy5/duckduckgo_searchicon-default.png?t=O83Ahttps://github.com/deedy5/duckduckgo_search.git
10个LLM实战案例,带你玩转AI原生应用开发 随着GPT-3.5、GPT-4、Llama 3等大语言模型的普及,传统“调用API做个功能”的模式已无法满足需求。真正的AI原生应用需要围绕LLM的特性重新设计架构——比如利用上下文学习能力实现“记忆对话”,通过工具调用突破模型知识边界,用多模态融合提升交互体验。本文将通过10个实战案例,带你理解这些核心设计思路。本文先通过“奶茶店智能点单助手”案例引出AI原生应用的核心设计逻辑,再分10个实战场景详细讲解实现方法,最后总结通用开发方法论。每个案例包含:场景痛点、技术选型、代码示例、调优技巧四部分。 阅读详情

相关推荐

LLM的应用

提示词工程,也称为 Prompt Engineering,是一种致力于优化和提高大型语言模型(LLM)输出质量的技术和方法。它主要关注如何设计、构造和优化提示词(Prompt),以引导 LLM 生成更准确、更有用、更符合用户需求的文本。可以说,掌握了提示词工程就掌握了打开 LLM 知识大门的钥匙。

凢的博客 7168

推荐|LangChain 实战:LLM 应用开发指南

你可能没听过 LangChain,甚至可能没听过 LLM,但 ChatGPT 肯定不陌生吧?2022 年底,ChatGPT 的横空出世,将我们推到了一个新的历史节点。随后,各种 AI 技术和 AI 应用遍地开花,今天 “3 分钟利用 AI 开发出一个游戏”,明天 “第一个 AI 程序员诞生”……习惯了 CURD 的我们,不禁感到无力和担忧,生怕明天就会被 AI 淘汰了。但换个思路,大语言模型的快速发展,对我们程序员何尝又不是一个巨大的机会呢?AI 的研究大致可以分为两部分:基础研究和应用研究。

优快云_224022的博客 1040

控制 LLM 的输出格式和解析其输出结果

控制LLM的输出格式和解析其输出结果是自然语言处理领域的重要问题,涉及多种技术和工具。通过合理的输入控制、输出后处理以及解析方法,可以对LLM的输出进行有效地控制和解析,从而满足不同应用场景的需求。未来,随着自然语言处理技术的不断发展,相信对LLM输出控制和解析的研究也将得到进一步的深化和完善。本文将介绍如何控制LLM的输出格式和解析其输出结果,以及相关的技术和工具。这包括向LLM提供特定的输入格式,比如加入特殊标记、指定特定的任务等,以引导LLM生成特定格式的输出。等,它们在各自的领域取得了显著的成就。

m0_70886513的博客 1792

LangChain实战:从原型到生产,动手打造 LLM 应用 书籍推荐!

LangChain实战:从原型到生产,动手打造 LLM 应用 书籍推荐!

2301_81940605的博客 2223

【NLP笔记】LLM应用之AI Agent & LangChain实战

AI Agent & LangChain

weixin_36488653的博客 3036

LLM应用可靠性工程:输入-调用-输出三层防御实战

大语言模型(LLM)应用的可靠性并非指模型参数稳定,而是系统在面对输出不确定性、网络抖动、服务降级等真实扰动时持续交付可用结果的能力。其核心在于突破传统微服务思维,构建覆盖输入层(鲁棒性)、调用层(韧性)、输出层(可控性)的全链路保障体系。关键技术包括动态超时机制、结构化输出校验、语义健康度监控与轻量级输出守门员。本文聚焦LLM调用链路工程实践,提供可落地的参数配置、避坑指南与故障归因方法,适用于算法工程师、后端架构师与AI产品经理推进LLM生产化。

weixin_33691700的博客 1388

LangChain 实战:LLM 应用开发指南

你可能没听过 LangChain,甚至可能没听过 LLM,但 ChatGPT 肯定不陌生吧?2022 年底,ChatGPT 的横空出世,将我们推到了一个新的历史节点。随后,各种 AI 技术和 AI 应用遍地开花,今天 “3 分钟利用 AI 开发出一个游戏”,明天 “第一个 AI 程序员诞生”……习惯了 CURD 的我们,不禁感到无力和担忧,生怕明天就会被 AI 淘汰了。但换个思路,大语言模型的快速发展,对我们程序员何尝又不是一个巨大的机会呢?AI 的研究大致可以分为两部分:基础研究和应用研究。

aolan123的博客 1399

LLM in a Loop:借助评估提升LLM输出效果

常规的提示工程虽然能在一定程度上提升 LLM 在各类任务中的表现,却存在核心局限 —— 高度依赖模型一次性准确执行任务的能力。在此背景下,一种通过反馈循环来改进 LLM 系统的新方法应运而生,即 “LLM in a Loop”,它借助评估(evals)机制,为提升 LLM 的输出效果开辟了新的路径。

llm_way的博客 854

4种控制LLM大模型输出JSON的方法

JSON 是全球使用最广泛的数据交换格式之一,支持我们的所有需求。在构建人工智能驱动的应用程序时,工程师不可避免地需要将大型语言模型(LLM)的输出集成到他们的代码库中。通过指示 LLM 使用特定的语法或模式,然后输出应用程序所需的生成结果,我们可以使应用程序的行为更加可预测。简而言之,JSON 的互操作性使其成为数据交换的首选。

新缸中之脑 2万+

LLM应用实战:当KBQA集成LLM

将传统KBQA中的部分模块,如NLU、指代消解、实体对齐等任务,完全由LLM实现

MENGERN的专栏 834

从零开始构建 LLM 应用:实战指南

从理解基础知识到编写代码,再到部署应用,你已经掌握了 LLM 应用开发的基本技能。现在,你可以继续探索 LLM 的更多功能,构建更复杂、更强大的应用,并与社区分享你的知识。LLM 的未来充满无限可能,你的旅程才刚刚开始!别担心,即使你是一位编程新手,这篇文章也能带你一步步踏入 LLM 应用开发的殿堂。它能够根据你的提示生成回复,并最终部署到网络上,让全世界都能体验你的作品。要将你的 LLM 应用部署到网络上,你可以使用 Streamlit Community Cloud。

步子哥的博客 1001

LLM流式输出实现

LLM流式输出技术通过分块生成、实时传输和增量渲染实现交互优化。其核心是将传统"黑箱式输出"转变为"边思考边表达"的渐进式交互,依托自回归生成特性,每次生成token后立即推送至客户端。关键技术包括模型层的分块生成控制、传输层的WebSocket/SSE协议支持,以及应用层的实时渲染优化。相比传统模式,流式输出显著降低用户等待焦虑,提升交互自然度,并节省服务器资源。该技术已广泛应用于实时翻译、代码辅助等场景,成为提升LLM用户体验的关键突破。

Q2024107的博客 1798

PLSQL Developer新手必看:如何避免安装过程中的常见坑

本文为PL/SQL Developer新手提供了详尽的安装与配置避坑指南。从版本选择、注册码使用、汉化包安装到Oracle客户端连接配置,逐一解析常见问题并提供解决方案,帮助开发者快速搭建稳定的PL/SQL开发环境,顺利开启Oracle数据库编程工作。

g9h0i1的博客 653

基于Pydantic的LLM输出结构化验证实战指南

摘要:本文探讨了如何利用Pydantic为大型语言模型(LLM)输出构建可靠的数据验证体系。针对LLM输出常见的结构化数据问题(如字段缺失、类型错乱等),文章提出采用Pydantic建立多层防御机制,包括基础类型验证、自定义验证器和复杂业务逻辑验证。通过电商商品信息提取等实战案例,展示了Pydantic与LangChain框架的深度集成方案,并提供了性能优化建议和错误监控体系。文章强调"信任但要验证"原则,指出Pydantic既能保持LLM的创造力,又能确保系统稳定性,是LLM应用开发中

1037

Cortex-M内核DWT周期计数器:从原理到STM32实战时间测量与性能分析

在嵌入式开发中,代码执行耗时测量是性能优化的基础。除了依赖外设定时器或SysTick,ARM Cortex-M3/M4/M7内核自带的DWT(Data Watchpoint and Tracker)调试组件提供了一种极低侵入性的硬件计时方案。其内部的32位周期计数器CYCCNT跟随内核时钟递增,无需占用额外引脚或定时器资源,即可实现纳秒级分辨率的函数耗时测量、中断响应分析及延时实现。从DWT寄存器配置、周期差值计算到基于SystemCoreClock的微秒换算,开发者可以快速搭建一套轻量级性能分析工具。本文

weixin_34216614的博客 189

深入解析Transformer三大注意力机制:自注意力、交叉注意力与因果自注意力

注意力机制是深度学习中的核心概念,它模拟了人类在处理信息时选择性聚焦的能力。其基本原理是通过计算查询与键的相似度,动态地为值分配权重,从而提取关键信息。这一机制解决了传统序列模型(如RNN)难以并行化和捕获长距离依赖的痛点,技术价值在于显著提升了模型的计算效率和表征能力。在自然语言处理、计算机视觉等应用场景中,注意力机制已成为构建强大模型的基石。本文聚焦于Transformer架构中的三种核心注意力变体:自注意力用于建立序列内部的全局关联,交叉注意力连接编码器与解码器的信息,而因果自注意力则确保自回归生成的

weixin_29094775的博客 414

LLM Guardrails:构建安全 AI 应用程序的指南

了解如何实施 LLM 护栏,以开发安全、可靠且符合道德的 AI 应用程序。大型语言模型 (LLM) 需要护栏来确保 AI 应用中的交互安全合规。本博客探讨了 LLM 护栏如何充当过滤响应的保护措施,从而将 LLM 输出保持在可接受的范围内。杰弗里·辛顿被誉为“人工智能教父”,最近获得了 2024 年诺贝尔物理学奖,他为人工智能做出了巨大贡献,主要是通过他在人工神经网络方面的工作。他的创新为人工智能在模式识别和深度学习方面的能力奠定了基础,而这两种能力推动了当今许多先进技术的发展。

2401_84208172的博客 2959

IDEA系列(四):IDEA导入Maven工程项目并配置Tomcat启动

本片文章主要介绍如何导入一个存在的maven项目并配置Tomcat启动项目,方便自己使用,也分享出来,希望可以帮助到其他人。

低调D树苗的博客 1244

LLM应用开发必备:Awesome LLM JSON资源列表与结构化输出实战指南

在大语言模型(LLM)应用开发中,获取稳定、可解析的结构化数据是核心需求。JSON作为一种轻量级数据交换格式,因其良好的可读性和广泛的编程语言支持,成为LLM与应用后端之间结构化通信的理想选择。其技术原理在于,通过精心设计的提示词(Prompt)或专门的客户端库,引导LLM的文本生成过程,使其输出符合预定语法和模式(Schema)的JSON字符串。这解决了LLM原生文本输出的随机性问题,极大提升了数据处理的自动化程度和系统集成效率。该技术广泛应用于智能客服、数据分析、内容生成和复杂AI Agent等场景,是

weixin_30932215的博客 602

数控弯管机xyz转换ybc的算法_数控弯管机技术的更新和应用.pdf

您所在位置:网站首页 > 海量文档&nbsp>&nbsp汽车/机械/制造&nbsp>&nbsp机械/模具设计数控弯管机技术的更新和应用.pdf3页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。 下载提示1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。2.该文档所...

weixin_31493101的博客 1522

USLE模型(1.2):LS因子的计算

基于USLE的甘南川西北土壤侵蚀研究。准备好30米分辨率的dem。

所有专家都曾始于新手 3481

LangChain 输出解析器实战详解:标准化 LLM 生成文本

本文详细讲解了如何使用 LangChain 的输出解析器(Output Parser)对大型语言模型(LLM)的生成文本进行标准化处理。文章从准备工作、Pydantic Parser、逗号分隔列表解析器(CSV Parser)、日期时间解析器(Datetime Parser)等多个角度进行讲解,附带完整 Python 示例,帮助开发者实现可靠、可控、可验证的 LLM 输出。

等风来 1130

STM32Cube高效开发教程<高级篇><FreeRTOS>(一)-----FreeRTOS基础

一、 FreeRTOS概述声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。本专栏博客参考《STM32Cube高效开发教程(高级篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。写在前面:今天就算正式开始高级篇的博客编写了,我本人也是第一次学习FreeRTOS,所以整体的进度会比较慢,博客更新可能不太会及时,希望大家原谅。一、 FreeRTOS概述。

我的博客 1848
上一篇: LLM应用实战: AI资讯的自动聚合及报告生成
下一篇: 今日吃瓜-艺术家集体抗议:OpenAI Sora项目背后的无偿劳动真相
mengrennwpu
博客等级 码龄15年 262粉丝 87原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mengrennwpu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值