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

汇川伺服驱动器参数优化实战指南

本文详细介绍了汇川伺服驱动器参数优化的实战技巧,涵盖控制模式选择、电子齿轮比调整、刚性匹配与振动抑制等关键内容。通过实际案例和实用技巧,帮助工程师快速掌握伺服驱动器参数调校方法,提升设备运行精度和稳定性。特别针对高精度定位和高速响应场景提供了专业指导。

weixin_29070721的博客 736

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

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

1037

MATLAB PDE工具箱电磁场仿真平行电容板及电偶极子详解

首先打开matlab,在命令行输入pdetool打开PDE工具箱 工具箱的功能我就不赘述了,大概就是以有限元的数值计算方法,计算二阶偏微分方程,因此可以解决电磁场、热力学等问题。 首先点击左上角按钮,画三个矩形 画完一个后可以双击矩形编辑,参数如下: 其中R1表示上极板,R2表示下极板,R3表示整个空间区域。 在上方Set formula为R3-R2-R1,表示求解区域是整个空间区域减去两个极板。下拉框选择Electrostatics表示求解的是静电场问题。 接下来点击上方菜单栏中的这个按钮,表

weixin_42845306的博客 1万+

HCIA重点知识

华为认证ICT工程师,是华为认证体系中用于标识个人能力在某一技术领域达到工程师级别的证明,表示通过认证的人员具备安装、配置、运行 ICT 设备,并进行基础故障排除的能力。抽象语言 -----> 编码 -----> 二进制 -----> 电信号 -----> 处理电信号信号的转换标准:协议,是一种允许电子设备相互交流的一系列标准的规则。即开放系统参考模型OSI/RM,简称“OSI”。OSI参考模型将计算机网络分为七个层次,自上而下依次为:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。1、应用层:

Awen0201的博客 2543

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

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

2401_84208172的博客 2959

unity中基于NGUI实现一张图片上在某个地方挖个洞

按照策划的要求,引导时只有被引导的图片是高亮的,其余地方都是黑色半透明,如下图所示: 对应的实现shader如下: Shader "Unlit/TutorialBg" { Properties { _MainTex ("Base (RGB), Alpha (A)", 2D) = "black" {} _ClipRange0 ("Clip Vector

手机游戏开发 3698

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

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

weixin_30932215的博客 602

卡门涡街可视化实战:从网格加密策略到动画后处理技巧

本文详细介绍了利用ANSYS Fluent进行卡门涡街可视化模拟的全流程,包括网格加密策略、求解器设置、涡街捕捉及动画后处理技巧。通过计算流体力学(CFD)方法,帮助工程师和研究人员高效模拟圆柱绕流现象,优化工程设计。

weixin_29309785的博客 414

ESP32-S3 SPI驱动SD卡与FATFS文件系统实践

SPI(串行外设接口)是嵌入式系统中常用的同步串行通信协议,通过主从架构实现全双工通信。其工作原理基于时钟同步和数据线传输,具有接线简单、占用引脚少的优势。在存储扩展场景中,SPI模式可驱动SD卡实现大容量数据存储,配合FATFS文件系统可提供标准化的文件管理能力。ESP32-S3作为乐鑫推出的高性能Wi-Fi/蓝牙双模芯片,其SPI外设支持高达80MHz时钟频率,结合ESP-IDF提供的sdspi_host驱动,开发者能快速实现SD卡存储方案。该技术广泛应用于物联网设备日志存储、传感器数据采集等场景,本实

weixin_29168393的博客 357

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

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

等风来 1130

从原理到落地:Mamba-YOLOv8 全面实战指南(源码 + 训练 + 部署一次学会)

在目标检测领域,CNN与Transformer的较量从未停歇。本文提出一种革命性的架构——,将状态空间模型(SSM)首次引入YOLO框架。实验表明,该模型在COCO数据集上达到54.3% mAP@0.5,推理速度达89 FPS(RTX 4090),相比原版YOLOv8提升12.7%精度与23%速度。本文将完整揭示其技术原理与工程实现,助您掌握这一前沿技术。

FJN110的博客 121
上一篇: 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、付费专栏及课程。

余额充值