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

Camera Sensor接口协议全解析(六)聚焦onsemi HiSPi接口的技术突破与应用实践

摘要: Onsemi HiSPi是一种高速并行接口协议,专为高分辨率图像传感器设计,具备1600 Mbps传输速率、低功耗和高兼容性特点。通过对比DVP、MIPI CSI-2等主流协议,HiSPi在工业/医疗领域表现突出,支持动态功耗控制、多ROI和CRC校验。其创新架构包含多PHY设计,提供分组SP、流SP等多种工作模式,满足灵活传输需求。实际应用中,HiSPi在PCB缺陷检测(5μm精度)和液晶面板检测(0.3% Mura检出率)等场景展现卓越性能,成为高速成像领域的关键技术。

GateWorld的博客 1437

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

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

1037

峰值电流模式CCM BUCK的传递函数推导

电流内环闭环传递函数: Gci(s)=i^L(s)v^comp(s)=FmGid(s)1+KRiHe(s)FmGid(s)=1Ri11+s[mcL+(0.5VIN−Vo)RiVINRifSW]+s21(πfSW)2 G_{ci}(s)=\frac{\hat i_{L}(s)}{\hat v_{comp}(s)}=\frac {F_mG_{id}(s)}{1+KR_iH_e(s)F_mG_{id}(s)}=\frac{1}{R_i}\frac{1}{1+s[\frac{m_cL+(0.5V_{IN}-V_o)

c007106333的博客 2358

S型速度曲线C程序实现

S型速度曲线C语言程序实现 前言 S型曲线相较于梯形速度曲线具有运行更加平稳的特点,S型曲线共有八种运行情况,感兴趣可以查阅相关文献 代码段 #include <stdio.h> #include <math.h> #define FP64 double int main(void) { /**************************** 定义相关变量(需要映射到PLC寄存器才能进行监控) ***********************/ FP6

LSX312441548的博客 8392

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

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

2401_84208172的博客 2959

(2-2-2)位置控制算法:常用的位置控制算法(2)

例如下面是一个使用滑模控制算法实现机器人位置控制的例子,在该例子中,假设机器人在一维空间中移动,目标是使机器人的位置迅速、鲁棒地达到设定的目标位置。自适应控制算法通过实时地调整控制器参数,可以适应系统的变化,从而提高系统的鲁棒性和性能。模型预测控制(Model Predictive Control,MPC)是一种先进的控制策略,通常应用于动态系统,以实现对系统状态的优化控制。(6)迭代优化:随着时间推移,MPC迭代执行上述步骤,持续优化控制输入,以适应系统动态和外部扰动,实现对系统状态的稳健控制。

码农三叔 1608

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

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

weixin_30932215的博客 602

基于STM32、HAL库的SC16IS752IPW总线转UART驱动程序设计

/ FIFO空间不足。// 设置LCR寄存器的DLAB位为1以访问DLL/DLH。// 设置LCR寄存器,先访问DLL/DLH。// 设置LCR寄存器(不包含DLAB位)

corlin6688的博客 817

11、系统稳定性分析与李雅普诺夫函数的应用

本文深入探讨了李雅普诺夫函数在系统稳定性分析中的核心作用,重点介绍了时变与时不变系统的稳定性判据差异,以及巴尔巴拉特引理在处理非自治系统中的应用。文章还阐述了正线性系统与严格正实传递函数的性质及其在非线性控制系统中的重要性,并展示了李雅普诺夫函数在评估主导时间常数和设计快速干扰抑制控制策略方面的实际应用。通过具体示例和流程图,系统地总结了李雅普诺夫方法在稳定性分析、性能评估与控制器设计中的多维度价值,同时指出了当前挑战与未来发展方向。

Jerry的专栏 93

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

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

等风来 1130

第67步 时间序列建模实战:ARIMA建模(Stata)

第67步 时间序列建模实战:ARIMA建模(Stata)

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

余额充值