Skip to content

Commit 4706d6a

Browse files
Merge pull request #120 from gomate-community/pipeline
feature@optimze deep research
2 parents 3070275 + f598dee commit 4706d6a

File tree

7 files changed

+89
-52
lines changed

7 files changed

+89
-52
lines changed

examples/generator/gemini_chat.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# https://ai.google.dev/gemini-api/docs/openai?hl=zh_cn
2+
# https://aistudio.google.com/app/apikey
3+
from openai import OpenAI
4+
5+
client = OpenAI(
6+
api_key="xxx",
7+
base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
8+
)
9+
10+
response = client.chat.completions.create(
11+
model="gemini-2.0-flash",
12+
n=1,
13+
messages=[
14+
{"role": "system", "content": "You are a helpful assistant."},
15+
{
16+
"role": "user",
17+
"content": "请帮我解释强化学习算法PPO"
18+
}
19+
]
20+
)
21+
22+
print(response.choices[0].message)

trustrag/modules/deepsearch/.env

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ DEFAULT_SERVICE="OPENAI"
1111
# OpenAI
1212
# -----------------------------------------------------------------------------
1313
# Required unless you're only using DeepSeek or another OpenAI-compliant API.
14-
OPENAI_API_KEY="sk-xx"
14+
OPENAI_API_KEY="sk-"
1515
OPENAI_MODEL="gpt-4o-mini"
1616

1717
# -----------------------------------------------------------------------------
@@ -49,4 +49,4 @@ FIRECRAWL_API_KEY="your_firecrawl_api_key_here"
4949
# -----------------------------------------------------------------------------
5050
# SearXNG
5151
# -----------------------------------------------------------------------------
52-
SEARXNG_URL="http://localhost:8080/search"
52+
SEARXNG_URL="http://192.168.1.5:8080/search"

trustrag/modules/deepsearch/action.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ async def generate_serp_queries(
3434
learnings: Optional[List[str]] = None,
3535
) -> List[SerpQuery]:
3636
"""Generate SERP queries based on user input and previous learnings."""
37+
print("正在进行研究主题的意图理解...")
3738

3839
prompt = f"""根据用户的以下提示,生成一系列SERP查询来研究该主题。
3940
返回一个JSON对象,其中包含一个'queries'数组字段,包含{num_queries}个查询(如果原始提示已经很明确,则可以少于这个数量)。
@@ -81,13 +82,24 @@ async def process_serp_result(
8182
# Create the contents string separately
8283
contents_str = "".join(f"<content>\n{content}\n</content>" for content in contents)
8384

85+
# prompt = (
86+
# f"根据以下对查询<query>{query}</query>的网页搜索内容,"
87+
# f"生成从内容中得到的学习要点列表。返回一个JSON对象,包含'learnings'和'followUpQuestions'键(key),"
88+
# f"值(value)为字符串数组。包括最多{num_learnings}个学习要点和{num_follow_up_questions}个后续问题。"
89+
# f"学习要点应该独特、简洁且信息丰富,包括实体、指标、数字和日期。\n\n"
90+
# f"<contents>{contents_str}</contents>"
91+
# f"请确保生成的学习要点和后续问题与用户原始查询({query})的语言保持一致。"
92+
# )
93+
8494
prompt = (
85-
f"根据以下对查询<query>{query}</query>的SERP搜索内容,"
86-
f"生成从内容中得到的学习要点列表。返回一个JSON对象,包含'learnings'和'followUpQuestions'键(key),"
87-
f"值(value)为字符串数组。包括最多{num_learnings}个学习要点和{num_follow_up_questions}个后续问题。"
88-
f"学习要点应该独特、简洁且信息丰富,包括实体、指标、数字和日期。\n\n"
95+
f"基于以下来自搜索引擎结果页面(SERP)对查询<query>{query}</query>的内容,"
96+
f"生成一个内容要点列表。返回一个JSON对象,包含'learnings'和'followUpQuestions'两个键,"
97+
f"learnings'代表从内容中提取的关键知识要点列表[xx,xxx],应该是独特、简洁且信息丰富的,包含实体名称、指标、数字和日期等。"
98+
f"'followUpQuestions'代表根据内容生成的推荐问题列表[xxx,xxx],用于引导更深入的探索。"
99+
f"JSON对象格式一定要正确,不要输出额外内容,不要漏掉键"
100+
f"值为字符串数组。包括最多{num_learnings}个要点和{num_follow_up_questions}个后续问题。"
101+
f"这些要点应该是独特的、简洁的、信息密集的,包含实体、指标、数字和日期。\n\n"
89102
f"<contents>{contents_str}</contents>"
90-
f"请确保生成的学习要点和后续问题与用户原始查询({query})的语言保持一致。"
91103
)
92104

93105
response = await get_client_response(
@@ -99,7 +111,7 @@ async def process_serp_result(
99111
],
100112
response_format={"type": "json_object"},
101113
)
102-
114+
loguru.logger.info(response)
103115
try:
104116
return {
105117
"learnings": response.get("learnings", [])[:num_learnings],
@@ -188,17 +200,18 @@ async def deep_research(
188200
num_queries=breadth,
189201
learnings=learnings,
190202
)
191-
203+
print("意图理解完成:",serp_queries)
192204
# Create a semaphore to limit concurrent requests
193205
semaphore = asyncio.Semaphore(concurrency)
194206

195207
async def process_query(serp_query: SerpQuery) -> ResearchResult:
196208
async with semaphore:
197209
try:
198210
# Search for content
211+
loguru.logger.info("正在处理子查询:" + serp_query.query)
199212
result = await search_service.search(serp_query.query, limit=2)
200-
loguru.logger.info("process_query:")
201-
loguru.logger.info(result)
213+
# loguru.logger.info(result)
214+
202215
# Collect new URLs
203216
new_urls = [
204217
item.get("url") for item in result["data"] if item.get("url")

trustrag/modules/deepsearch/finder/manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ async def search_and_scrape(
6565
semaphore = asyncio.Semaphore(max_concurrent_scrapes)
6666

6767
async def scrape_with_semaphore(url):
68-
loguru.logger.info("Scraping %s"+url)
68+
loguru.logger.info("Scraping url==>:"+url)
6969
async with semaphore:
7070
return await self.scrape(url, **kwargs)
7171

trustrag/modules/deepsearch/finder/scraper.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@ async def teardown(self):
6969

7070
async def scrape(self, url: str, **kwargs) -> ScrapedContent:
7171
"""Scrape a URL using Playwright and return standardized content."""
72-
loguru.logger.info(f"{url} scraped")
7372
if not self.browser:
7473
await self.setup()
7574

@@ -98,7 +97,7 @@ async def scrape(self, url: str, **kwargs) -> ScrapedContent:
9897

9998
# Close the page
10099
await page.close()
101-
100+
loguru.logger.info(f"{url} scraped")
102101
return ScrapedContent(
103102
url=url,
104103
html=html,
@@ -109,7 +108,6 @@ async def scrape(self, url: str, **kwargs) -> ScrapedContent:
109108
"headers": response.headers if response else {},
110109
},
111110
)
112-
113111
except Exception as e:
114112
loguru.logger.error(f"Error scraping {url}: {str(e)}")
115113
return ScrapedContent(
@@ -162,7 +160,8 @@ async def main():
162160
# 要爬取的网址
163161
target_url = "https://blog.sciencenet.cn/blog-2089193-1469701.html"
164162
target_url = "https://blog.csdn.net/2401_85375151/article/details/144805338"
165-
target_url = "https://zhuanlan.zhihu.com/p/19647641182"
163+
target_url = "https://blog.csdn.net/csdnnews/article/details/146084709?spm=1000.2115.3001.5926"
164+
# target_url = "https://zhuanlan.zhihu.com/p/19647641182"
166165
# 爬取内容
167166
result = await scraper.scrape(target_url)
168167

Lines changed: 39 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,67 @@
1-
# 大模型强化学习技术的最终报告
1+
# 大模型强化学习算法综述
22

3-
## 一、引言
3+
## 引言
44

5-
在人工智能飞速发展的今天,大语言模型(LLM)与强化学习(RL)技术的融合正在引领一场深刻的变革。尤其在复杂任务环境中,这种结合不仅推动了自然语言理解和视觉信息处理的进步,也提高了模型的学习效率和决策准确性。本报告将详细探讨大模型强化学习技术的最新进展及其在各个领域的应用
5+
近年来,机器学习领域取得了显著进展,尤其是在大语言模型(LLM)和强化学习(RL)的结合方面。这种结合开启了新的研究方向,改善了强化学习的性能和效率。本文旨在综述大模型在强化学习算法中的应用,分析其最新进展并展望未来发展方向
66

7-
## 二、大模型与强化学习的结合
7+
## 大模型在辅助强化学习中的角色
88

9-
### 2.1 多模态信息处理能力
9+
大模型在辅助强化学习(LLM-enhanced RL)中扮演了四种主要角色,这不仅优化了强化学习算法的应用效果,还增强了其在复杂环境中的决策能力。主要角色包括:
1010

11-
大语言模型通过其强大的多模态信息处理能力,显著提升了强化学习在复杂任务中的学习效率。尤其是在自然语言与视觉信息的理解和处理上,大模型展现出了优越性。这种结合使得模型能够更流畅地处理多样的信息输入,从而提高决策制定质量。
11+
1. **智能体设计**: 大模型能够生成更复杂的策略,优化智能体在多任务学习中的表现。
12+
2. **环境建模**: 通过模拟环境,大模型可以帮助强化学习智能体进行有效探索。
13+
3. **数据生成与增强**: 大模型可生成高质量的训练数据,提升样本利用率,降低对大量标注数据的依赖。
14+
4. **策略优化**: 大模型的通用性使其能够与多种强化学习算法结合,增强策略优化过程。
1215

13-
### 2.2 自适应调节系统
16+
## 近期进展:讯飞星火模型
1417

15-
在2024年,研究人员成功实现了基于强化学习的自适应调节系统,从而提升了大模型的学习效率和决策准确性。通过这种系统,模型能够实时调整其策略以适应动态的环境,减少了因环境变化引起的性能下降。
18+
2024年10月,讯飞星火模型发布了4.0 Turbo版本,标志着其在自然语言处理领域的重要突破。这一版本的模型在核心能力上提升了50%,完成了对GPT-4 Turbo的全面超越。这一成就显示了大模型在实现复杂任务时的潜力,尤其是在如下方面:
1619

17-
## 三、新算法的重大发现
20+
- **数学能力**: 在国际14项主流测试集中,星火大模型获得9项第一,证明了其强大的数学推理能力。
21+
- **代码生成**: 其在代码生成任务中的表现卓越,能够自动产生优化的代码解决方案,推动了软件开发的自动化。
1822

19-
2023年,Google DeepMind公布了一项结合自监督学习与强化学习的新算法,大幅提高了大规模模型在自然语言处理任务中的表现。这一突破为大语言模型的应用提供了新的可能,尤其是在需要处理复杂语言现象的场景中,展现了显著的优势。
23+
## 强化学习与逆强化学习的进展
2024

21-
从最新的研究中可以看到,使用深度强化学习算法在复杂游戏环境中可以获得比传统算法高出20%的胜率。这一结果表明,在对抗性任务中,大模型强化学习的表现远超常规手段
25+
强化学习与逆强化学习的研究不断演进,已成为全球范围内的热点领域。近年来的研究集中在如何结合大模型的优势,探索新的算法和理论。例如,逆强化学习为理解和解析人类行为提供了强有力的工具,使得研究者能够学习和模仿人类的决策过程。随着对大模型性能的深入研究,未来在逆强化学习领域可能会出现更多交叉应用的实例
2226

23-
## 四、实际应用与挑战
27+
## 增强LLM的技术路线
2428

25-
### 4.1 医疗影像分析
29+
为提升大模型在强化学习中的应用效果,研究者提出了多种技术路线,其中主要包括:
30+
- **基于奖励模型的强化学习(RLHF)**: 该方法通过构建奖励模型来指导智能体学习,保证其在训练过程中获得良好的反馈。
31+
- **反向奖励模型(RLAIF)**: 这种方法通过逆向推导奖励信号,增强了对人类偏好的捕捉能力,为强化学习提供了新的视角。
2632

27-
在医疗领域,大模型强化学习技术的应用已经取得了显著进展。例如,在肿瘤检测中,相关研究表明,该技术的准确率达到了90%以上,标志着人工智能在医疗影像分析中的潜力
33+
这种技术的结合促进了更高效的学习机制,使得智能体能够在复杂环境中做出更优的决策
2834

29-
此外,强化学习也被用于生成个性化治疗方案,通过模拟不同治疗路径,帮助医生为肿瘤患者制定更有效的治疗策略。同时,一些医疗机构利用强化学习模型来优化药物剂量调整方案,从而在治疗糖尿病患者中提高了治疗效果,患者的血糖水平下降了15%。
35+
## 研究综述及其影响
3036

31-
### 4.2 计算资源成本
37+
近期的调研显示,已有130余篇关于大语言模型及视觉-语言模型在辅助强化学习中的研究成果,这些研究的合成形成了一篇综述文章并已上传至arXiv。这些研究强调了大模型在不同任务和环境中的适应性,并提出多种应用实例,展示了其广泛的实用潜力。
3238

33-
尽管大模型强化学习技术带来了显著的进步,但在实际应用中,模型训练的计算资源成本极高。预计到2025年,这一成本可能达到数百万美元,涵盖硬件、维护和技术支持等多方面的支出。这一问题对如何合理分配资源和优化训练过程提出了挑战。
39+
## 当前的研究重点
3440

35-
### 4.3 数据依赖性
41+
目前,研究主要集中在大模型的平台应用与开发,特别是星火大模型如何在实际任务中实现应用。这些研究不仅关注模型的设计与优化,还探讨如何将模型与强化学习算法有效整合,从而提升其在现实世界应用中的效果。
3642

37-
大模型强化学习在复杂任务中的数据依赖性非常强,通常需要大量高质量的数据集。这就要求在数据收集和预处理时确保数据的多样性和准确性,以提高模型的训练效果。然而,现实中获取足够的高质量数据往往困难重重。
43+
## 直接偏好优化(DPO)方法
3844

39-
## 五、应对模型泛化能力不足的信息
45+
近年来,直接偏好优化(DPO)方法的发展为强化学习提供了新的思路。DPO方法允许研究者在没有显式奖励模型的情况下,使用人类偏好数据直接对齐模型行为。这种方法简化了强化学习的训练过程,同时提升了模型的可用性和实用性。
4046

41-
尽管大模型强化学习在训练和测试阶段表现良好,但在实际应用中,模型可能会遭遇预期之外的失败,主要由于其泛化能力不足。为了提高模型在真实环境中的鲁棒性,采用领域适应和迁移学习等策略成为了研究者们的重点关注。此外,针对模型在不同场景下的适应能力,研究者们提出了多种解决方案,以增强模型的灵活性和适用性。
47+
### DPO的优势
48+
- **减少标注需求**: 通过直接利用人类偏好,DPO降低了对大量标注数据的依赖,提升了训练效率。
49+
- **增强模型可解释性**: 由于DPO直接对齐人类偏好,模型的行为变得更加可预测和可解释。
4250

43-
## 六、长期决策能力的提升
51+
## 结论与展望
4452

45-
通过结合大语言模型,强化学习的长期决策能力得到了显著提升。特别是在离线强化学习中,采用Decision Transformer,展现了出色的决策模式和效率。这一进展为在多变环境中制定长远策略提供了新的思路。
46-
47-
## 七、结论
48-
49-
大模型强化学习技术正处于飞速发展的阶段,其在各个领域的应用潜力巨大。然而,面对计算成本、数据依赖性和模型泛化能力不足等挑战,研究者们需不断探索新的解决方案,通过改进模型和算法设计,推动该领域的未来发展。借助不断创新的技术手段,大模型强化学习必将为复杂任务的解决提供更为精准和高效的工具。
50-
51-
## 八、未来展望
52-
53-
随着技术的进步和研究的深入,未来大模型强化学习将继续展现其在各个领域的广泛应用潜力。预计在不久的将来,我们将看到更多新算法与现有技术的融合,为复杂问题的解决提供有力支持。同时,如何合理配置资源、收集高质量数据并提升模型的鲁棒性,将是行业内研究者们亟需克服的挑战。
53+
大模型在强化学习中的应用展现了巨大的潜力,并引领了新的研究方向。随着技术的发展和数据的积累,未来我们可以预见以下趋势:
54+
- **更深层的算法融合**: 大模型与强化学习策略的深层次结合将推动新的算法诞生。
55+
- **多任务学习的普遍适用性**: 通过提升样本利用率,大模型的多任务学习能力将得到进一步强化。
56+
- **应用场景的不断拓展**: 包括医疗、金融、自动驾驶等领域中,大模型强化学习的应用将越来越普遍。
5457

58+
通过继续在这一领域的深入研究,我们有望实现更加智能和高效的强化学习系统,推动技术的前进与社会的发展。
5559

5660
## 来源
5761

58-
- https://tyjh.tc.edu.tw/
59-
- https://cloud.tencent.com/developer/article/2408409
60-
- https://www.sohu.com/a/431330147_114877
61-
- https://zhuanlan.zhihu.com/p/24149686512
6262
- https://blog.csdn.net/2401_85375151/article/details/144805338
63+
- https://zhuanlan.zhihu.com/p/19647641182
64+
- https://xinghuo.xfyun.cn/
6365
- https://www.facebook.com/p/臺中市立大雅國民中學-100057845521494/?locale=zh_TW
64-
- https://blog.csdn.net/2401_85343303/article/details/145762041
66+
- https://blog.sciencenet.cn/blog-2089193-1469625.html
67+
- https://tyjh.tc.edu.tw/
File renamed without changes.

0 commit comments

Comments
 (0)